mlr_pipeops_nn_block | R Documentation |
Repeat a block n_blocks
times by concatenating it with itself (via %>>%
).
For the generated module graph, the IDs of the modules are generated by prefixing the
IDs of the n_blocks
layers with the ID of the PipeOpTorchBlock
and postfixing them with
__<layer>
.
The parameters available for the provided block
, as well as
n_blocks
:: integer(1)
How often to repeat the block.
trafo
:: function(i, param_vals, param_set) -> list()
A function that allows to transform the parameters vaues of each layer (block
).
Here,
i
:: integer(1)
is the index of the layer, ranging from 1
to n_blocks
.
param_vals
:: named list()
are the parameter values of the layer i
.
param_set
:: ParamSet
is the parameter set of the whole PipeOpTorchBlock
.
The function must return the modified parameter values for the given layer. This, e.g., allows for special behavior of the first or last layer.
The PipeOp
sets its input and output channels to those from the block
(Graph)
it received during construction.
The state is the value calculated by the public method $shapes_out()
.
mlr3pipelines::PipeOp
-> mlr3torch::PipeOpTorch
-> PipeOpTorchBlock
block
(Graph
)
The neural network segment that is repeated by this PipeOp
.
new()
Creates a new instance of this R6 class.
PipeOpTorchBlock$new(block, id = "nn_block", param_vals = list())
block
(Graph
)
A graph consisting primarily of PipeOpTorch
objects that is to be
repeated.
id
(character(1)
)
The id for of the new object.
param_vals
(named list()
)
Parameter values to be set after construction.
clone()
The objects of this class are cloneable with this method.
PipeOpTorchBlock$clone(deep = FALSE)
deep
Whether to make a deep clone.
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_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_ltnsr
,
mlr_pipeops_torch_ingress_num
,
mlr_pipeops_torch_loss
,
mlr_pipeops_torch_model
,
mlr_pipeops_torch_model_classif
,
mlr_pipeops_torch_model_regr
# repeat a simple linear layer with ReLU activation 3 times, but set the bias for the last
# layer to `FALSE`
block = nn("linear") %>>% nn("relu")
blocks = nn("block", block,
linear.out_features = 10L, linear.bias = TRUE, n_blocks = 3,
trafo = function(i, param_vals, param_set) {
if (i == param_set$get_values()$n_blocks) {
param_vals$linear.bias = FALSE
}
param_vals
})
graph = po("torch_ingress_num") %>>%
blocks %>>%
nn("head")
md = graph$train(tsk("iris"))[[1L]]
network = model_descriptor_to_module(md)
network
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.