Represents a model; possibly a complete model, possibly one in the process of being built up.
This model takes input tensors of shapes shapes_in and
pipes them through graph. Input shapes get mapped to input channels of graph.
Output shapes are named by the output channels of graph; it is also possible
to represent no-ops on tensors, in which case names of input and output should be identical.
ModelDescriptor objects typically represent partial models being built up, in which case the pointer slot
indicates a specific point in the graph that produces a tensor of shape pointer_shape, on which the graph should
be extended.
It is allowed for the graph in this structure to be modified by-reference in different parts of the code.
However, these modifications may never add edges with elements of the Graph as destination. In particular, no
element of graph$input may be removed by reference, e.g. by adding an edge to the Graph that has the input
channel of a PipeOp that was previously without parent as its destination.
In most cases it is better to create a specific ModelDescriptor by training a Graph consisting (mostly) of
operators PipeOpTorchIngress, PipeOpTorch, PipeOpTorchLoss, PipeOpTorchOptimizer, and
PipeOpTorchCallbacks.
A ModelDescriptor can be converted to a nn_graph via model_descriptor_to_module.
Usage
ModelDescriptor(
graph,
ingress,
task,
optimizer = NULL,
loss = NULL,
callbacks = NULL,
pointer = NULL,
pointer_shape = NULL
)Arguments
- graph
(
Graph)GraphofPipeOpModuleandPipeOpNOPoperators.- ingress
(uniquely named
listofTorchIngressToken)
List of inputs that go intograph. Names of this must be a subset ofgraph$input$name.- task
(
Task)
(Training)-Task for which the model is being built. May be necessary for for some aspects of what loss to use etc.- optimizer
(
TorchOptimizer|NULL)
Additional info: what optimizer to use.- loss
(
TorchLoss|NULL)
Additional info: what loss to use.- callbacks
(A
listofCallbackSetorNULL)
Additional info: what callbacks to use.- pointer
(
character(2)|NULL)
Indicating an element on which a model is. Points to an output channel withingraph: Element 1 is thePipeOp's id and element 2 is thatPipeOp's output channel.- pointer_shape
(
integer|NULL)
Shape of the output indicated bypointer.
See also
Other Model Configuration:
mlr_pipeops_torch_callbacks,
mlr_pipeops_torch_loss,
mlr_pipeops_torch_optimizer,
model_descriptor_union()
Other Graph Network:
TorchIngressToken(),
mlr_learners_torch_model,
mlr_pipeops_module,
mlr_pipeops_torch,
mlr_pipeops_torch_ingress,
mlr_pipeops_torch_ingress_categ,
mlr_pipeops_torch_ingress_ltnsr,
mlr_pipeops_torch_ingress_num,
model_descriptor_to_learner(),
model_descriptor_to_module(),
model_descriptor_union(),
nn_graph()