Package ai.djl.nn.core
Class LinearCollection
java.lang.Object
ai.djl.nn.AbstractBaseBlock
ai.djl.nn.AbstractBlock
ai.djl.nn.core.LinearCollection
- All Implemented Interfaces:
Block
A LinearCollection block applies \(m\) linear transformations \(Y_i = X_i W_i + b_i\) for each
\(i \in [1, \ldots, m]\) and \(m = \prod_{j=1}^t s_j\). \(t\) is typically 1, so compared to a
Linear block, the involved shapes have typically one split dimension added which
separates the different linear transformations from each other. Another difference to a Linear block is that the weight is not transposed (to align with the internally used algebraic
operation NDArray.matMul(NDArray) ).
It has the following shapes:
- input X: [x_1, s_1, s_2, …, s_t, input_dim]
- weight W: [s_1, s_2, …, s_t, input_dim, units]
- Bias b: [s_1, s_2, …, s_t, units]
- output Y: [x_1, s_1, s_2, …, s_t, units]
The LinearCollection block should be constructed using LinearCollection.Builder.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classThe Builder to construct aLinearCollectiontype ofBlock. -
Field Summary
Fields inherited from class ai.djl.nn.AbstractBlock
children, parametersFields inherited from class ai.djl.nn.AbstractBaseBlock
inputNames, inputShapes, outputDataTypes, version -
Method Summary
Modifier and TypeMethodDescriptionprotected voidbeforeInitialize(Shape... inputShapes) Performs any action necessary before initialization.static LinearCollection.Builderbuilder()Creates a builder to build aLinear.Returns aPairListof input names, and shapes.protected NDListforwardInternal(ParameterStore parameterStore, NDList inputs, boolean training, ai.djl.util.PairList<String, Object> params) A helper forBlock.forward(ParameterStore, NDList, boolean, PairList)after initialization.Shape[]getOutputShapes(Shape[] inputs) Returns the expected output shapes of the block for the specified input shapes.Applies linear transformations to the incoming data.voidloadMetadata(byte loadVersion, DataInputStream is) Overwrite this to load additional metadata with the parameter values.voidSets the shape ofParameters.protected voidOverride this method to save additional data apart from parameter values.Methods inherited from class ai.djl.nn.AbstractBlock
addChildBlock, addChildBlock, addChildBlockSingleton, addParameter, getChildren, getDirectParametersMethods inherited from class ai.djl.nn.AbstractBaseBlock
cast, clear, forward, forward, forwardInternal, getInputShapes, getOutputDataTypes, getParameters, initialize, initializeChildBlocks, isInitialized, loadParameters, readInputShapes, saveInputShapes, saveParameters, setInitializer, setInitializer, setInitializer, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface ai.djl.nn.Block
forward, freezeParameters, freezeParameters, getOutputShapes
-
Method Details
-
forwardInternal
protected NDList forwardInternal(ParameterStore parameterStore, NDList inputs, boolean training, ai.djl.util.PairList<String, Object> params) A helper forBlock.forward(ParameterStore, NDList, boolean, PairList)after initialization.- Specified by:
forwardInternalin classAbstractBaseBlock- Parameters:
parameterStore- the parameter storeinputs- the input NDListtraining- true for a training forward passparams- optional parameters- Returns:
- the output of the forward pass
-
getOutputShapes
Returns the expected output shapes of the block for the specified input shapes.- Parameters:
inputs- the shapes of the inputs- Returns:
- the expected output shapes of the block
-
describeInput
Returns aPairListof input names, and shapes.- Specified by:
describeInputin interfaceBlock- Overrides:
describeInputin classAbstractBaseBlock- Returns:
- the
PairListof input names, and shapes
-
beforeInitialize
Performs any action necessary before initialization. For example, keep the input information or verify the layout.- Overrides:
beforeInitializein classAbstractBaseBlock- Parameters:
inputShapes- the expected shapes of the input
-
prepare
Sets the shape ofParameters.- Overrides:
preparein classAbstractBaseBlock- Parameters:
inputShapes- the shapes of inputs
-
saveMetadata
Override this method to save additional data apart from parameter values.This default implementation saves the currently set input shapes.
- Overrides:
saveMetadatain classAbstractBaseBlock- Parameters:
os- the non-null output stream the parameter values and metadata are written to- Throws:
IOException- saving failed
-
loadMetadata
public void loadMetadata(byte loadVersion, DataInputStream is) throws IOException, MalformedModelException Overwrite this to load additional metadata with the parameter values.If you overwrite
AbstractBaseBlock.saveMetadata(DataOutputStream)or need to provide backward compatibility to older binary formats, you probably need to overwrite this. This default implementation checks if the version number fits, if not it throws anMalformedModelException. After that it restores the input shapes.- Overrides:
loadMetadatain classAbstractBaseBlock- Parameters:
loadVersion- the version used for loading this metadata.is- the input stream we are loading from- Throws:
IOException- loading failedMalformedModelException- data can be loaded but has wrong format
-
linear
Applies linear transformations to the incoming data.- Parameters:
input- input X: [x_1, s_1, s_2, …, s_t, input_dim]weight- weight W: [s_1, s_2, …, s_t, input_dim, units]bias- bias b: [s_1, s_2, …, s_t, units]- Returns:
- output Y: [x_1, s_1, s_2, …, s_t, units]
-
builder
Creates a builder to build aLinear.- Returns:
- a new builder
-