Ingress for a single lazy_tensor
column.
Parameters
shape
::integer()
|NULL
|"infer"
The shape of the tensor, where the first dimension (batch) must beNA
. When it is not specified, the lazy tensor input column needs to have a known shape. When it is set to"infer"
, the shape is inferred from an example batch.
Input and Output Channels
One input channel called "input"
and one output channel called "output"
.
For an explanation see PipeOpTorch
.
See also
Other PipeOps:
mlr_pipeops_nn_adaptive_avg_pool1d
,
mlr_pipeops_nn_adaptive_avg_pool2d
,
mlr_pipeops_nn_adaptive_avg_pool3d
,
mlr_pipeops_nn_avg_pool1d
,
mlr_pipeops_nn_avg_pool2d
,
mlr_pipeops_nn_avg_pool3d
,
mlr_pipeops_nn_batch_norm1d
,
mlr_pipeops_nn_batch_norm2d
,
mlr_pipeops_nn_batch_norm3d
,
mlr_pipeops_nn_block
,
mlr_pipeops_nn_celu
,
mlr_pipeops_nn_conv1d
,
mlr_pipeops_nn_conv2d
,
mlr_pipeops_nn_conv3d
,
mlr_pipeops_nn_conv_transpose1d
,
mlr_pipeops_nn_conv_transpose2d
,
mlr_pipeops_nn_conv_transpose3d
,
mlr_pipeops_nn_dropout
,
mlr_pipeops_nn_elu
,
mlr_pipeops_nn_flatten
,
mlr_pipeops_nn_ft_cls
,
mlr_pipeops_nn_ft_transformer_block
,
mlr_pipeops_nn_geglu
,
mlr_pipeops_nn_gelu
,
mlr_pipeops_nn_glu
,
mlr_pipeops_nn_hardshrink
,
mlr_pipeops_nn_hardsigmoid
,
mlr_pipeops_nn_hardtanh
,
mlr_pipeops_nn_head
,
mlr_pipeops_nn_identity
,
mlr_pipeops_nn_layer_norm
,
mlr_pipeops_nn_leaky_relu
,
mlr_pipeops_nn_linear
,
mlr_pipeops_nn_log_sigmoid
,
mlr_pipeops_nn_max_pool1d
,
mlr_pipeops_nn_max_pool2d
,
mlr_pipeops_nn_max_pool3d
,
mlr_pipeops_nn_merge
,
mlr_pipeops_nn_merge_cat
,
mlr_pipeops_nn_merge_prod
,
mlr_pipeops_nn_merge_sum
,
mlr_pipeops_nn_prelu
,
mlr_pipeops_nn_reglu
,
mlr_pipeops_nn_relu
,
mlr_pipeops_nn_relu6
,
mlr_pipeops_nn_reshape
,
mlr_pipeops_nn_rrelu
,
mlr_pipeops_nn_selu
,
mlr_pipeops_nn_sigmoid
,
mlr_pipeops_nn_softmax
,
mlr_pipeops_nn_softplus
,
mlr_pipeops_nn_softshrink
,
mlr_pipeops_nn_softsign
,
mlr_pipeops_nn_squeeze
,
mlr_pipeops_nn_tanh
,
mlr_pipeops_nn_tanhshrink
,
mlr_pipeops_nn_threshold
,
mlr_pipeops_nn_tokenizer_categ
,
mlr_pipeops_nn_tokenizer_num
,
mlr_pipeops_nn_unsqueeze
,
mlr_pipeops_torch_ingress
,
mlr_pipeops_torch_ingress_categ
,
mlr_pipeops_torch_ingress_num
,
mlr_pipeops_torch_loss
,
mlr_pipeops_torch_model
,
mlr_pipeops_torch_model_classif
,
mlr_pipeops_torch_model_regr
Other Graph Network:
ModelDescriptor()
,
TorchIngressToken()
,
mlr_learners_torch_model
,
mlr_pipeops_module
,
mlr_pipeops_torch
,
mlr_pipeops_torch_ingress
,
mlr_pipeops_torch_ingress_categ
,
mlr_pipeops_torch_ingress_num
,
model_descriptor_to_learner()
,
model_descriptor_to_module()
,
model_descriptor_union()
,
nn_graph()
Super classes
mlr3pipelines::PipeOp
-> mlr3torch::PipeOpTorchIngress
-> PipeOpTorchIngressLazyTensor
Methods
Method new()
Creates a new instance of this R6 class.
Usage
PipeOpTorchIngressLazyTensor$new(
id = "torch_ingress_ltnsr",
param_vals = list()
)
Arguments
id
(
character(1)
)
Identifier of the resulting object.param_vals
(
list()
)
List of hyperparameter settings, overwriting the hyperparameter settings that would otherwise be set during construction.
Examples
po_ingress = po("torch_ingress_ltnsr")
task = tsk("lazy_iris")
md = po_ingress$train(list(task))[[1L]]
ingress = md$ingress
x_batch = ingress[[1L]]$batchgetter(data = task$data(1, "x"), cache = NULL)
x_batch
#> torch_tensor
#> 5.1000 3.5000 1.4000 0.2000
#> [ CPUFloatType{1,4} ]
# Now we try a lazy tensor with unknown shape, i.e. the shapes between the rows can differ
ds = dataset(
initialize = function() self$x = list(torch_randn(3, 10, 10), torch_randn(3, 8, 8)),
.getitem = function(i) list(x = self$x[[i]]),
.length = function() 2)()
task_unknown = as_task_regr(data.table(
x = as_lazy_tensor(ds, dataset_shapes = list(x = NULL)),
y = rnorm(2)
), target = "y", id = "example2")
# this task (as it is) can NOT be processed by PipeOpTorchIngressLazyTensor
# It therefore needs to be preprocessed
po_resize = po("trafo_resize", size = c(6, 6))
task_unknown_resize = po_resize$train(list(task_unknown))[[1L]]
# printing the transformed column still shows unknown shapes,
# because the preprocessing pipeop cannot infer them,
# however we know that the shape is now (3, 10, 10) for all rows
task_unknown_resize$data(1:2, "x")
#> x
#> <lazy_tensor>
#> 1: <tnsr[]>
#> 2: <tnsr[]>
po_ingress$param_set$set_values(shape = c(NA, 3, 6, 6))
md2 = po_ingress$train(list(task_unknown_resize))[[1L]]
ingress2 = md2$ingress
x_batch2 = ingress2[[1L]]$batchgetter(
data = task_unknown_resize$data(1:2, "x"),
cache = NULL
)
x_batch2
#> torch_tensor
#> (1,1,.,.) =
#> -0.1162 1.0661 0.1097 0.6084 0.4908 -1.1992
#> 0.9528 -2.0804 -1.1915 -0.8041 -0.6268 -1.3245
#> 0.4127 1.3087 0.8552 0.2198 -0.7878 -0.5921
#> -0.8736 0.1242 -0.8213 -0.7068 0.9494 -0.0561
#> -0.1189 0.6591 -1.1172 0.0913 -0.8464 0.0859
#> 0.5215 -1.2730 0.5346 -0.5799 0.9089 -0.7795
#>
#> (2,1,.,.) =
#> -0.1204 -0.0693 0.4054 -1.1354 -0.3699 0.6967
#> -0.5972 -0.3798 0.1553 0.0617 0.2451 0.5833
#> 0.2652 -0.0852 0.8211 0.7866 0.6422 0.3525
#> 0.1120 0.2765 0.5074 -0.1511 -0.1650 0.1369
#> 0.1296 0.5308 0.0436 -0.8076 -0.2420 -0.0696
#> -1.1178 -0.0699 -0.9327 -0.9755 0.0195 0.5411
#>
#> (1,2,.,.) =
#> -0.3692 0.5707 -0.1628 0.0710 -1.1937 -0.7003
#> 0.7727 -0.8634 0.0788 -1.0343 -0.5124 0.4276
#> 0.5874 -0.5795 0.9123 -0.0004 -0.0190 1.1803
#> 0.0489 -0.0507 -0.8589 0.3679 -2.0261 -0.3476
#> 0.3980 -1.4602 0.7386 0.5377 0.0073 -0.0044
#> -0.1834 -0.1911 0.1202 -0.6674 0.1807 0.1860
#>
#> (2,2,.,.) =
#> -0.2401 -0.9897 -1.2411 -1.1231 0.3922 0.2636
#> -0.6174 -0.8007 -0.3503 -0.0136 -0.4699 0.1474
#> 1.1410 0.2937 -0.0346 1.2381 0.0684 0.1303
#> -0.7401 0.2000 -0.2754 -0.1118 -0.2961 -0.4570
#> -0.1403 0.2748 0.5636 0.2346 0.2205 -0.2034
#> ... [the output was truncated (use n=-1 to disable)]
#> [ CPUFloatType{2,3,6,6} ]