0% found this document useful (0 votes)
102 views

Model Component

The document summarizes the key layers and descriptors available in Kaldi's nnet3 setup. It describes input, output, and basic layers like affine, LSTM, normalization layers. It provides examples of layer configurations with arguments like input, dimensions, regularization options. Descriptors are also summarized, which define how to combine outputs from different layers as inputs to other layers.

Uploaded by

Daniel Chen
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
102 views

Model Component

The document summarizes the key layers and descriptors available in Kaldi's nnet3 setup. It describes input, output, and basic layers like affine, LSTM, normalization layers. It provides examples of layer configurations with arguments like input, dimensions, regularization options. Descriptors are also summarized, which define how to combine outputs from different layers as inputs to other layers.

Uploaded by

Daniel Chen
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 15

# Kaldi nnet3

Check `steps/libs/nnet3/xconfig`

Reference: [How to Config Kaldi nnet3 (in Chinese 簡體)]


(http://166.111.134.19:8081/tangzy/files/trp_nnet3_config.pdf)

## Index

- [Descriptor](#Descriptor)
- [basic_layers](#basic_layers)

## Descriptor

descriptor describes how to glue node output as an input of a particular network-


node

Summary of descriptors

- `<descriptor> ::= <node-name>`


- `<descriptor> ::= Append(<descriptor>, <descriptor> [, <descriptor> ... ] )`
- `<descriptor> ::= Sum(<descriptor>, <descriptor>)`
- `<descriptor> ::= Const(<value>, <dimension>)`
- `<descriptor> ::= Scale(<scale>, <descriptor>)`
- `<descriptor> ::= Failover(<descriptor>, <descriptor>)`
- `<descriptor> ::= IfDefined(<descriptor>)`
- `<descriptor> ::= Offset(<descriptor>, <t-offset> [, <x-offset> ] )`
- `<descriptor> ::= Switch(<descriptor>, <descriptor> [, <descriptor> ...])`
- `<descriptor> ::= Round(<descriptor>, <t-modulus>)`
- `<descriptor> ::= ReplaceIndex(<descriptor>, <variable-name>, <value>)`:
`<variable-name> = <t|x>`

In `xconfig`, `input@-3` means `Offset(input, -3)`

If you don't specify the `input` attribute, the default value is `[-1]`, which
represents the previous layer.

`Append(-1, 0, 1)` is a short-cut of `Append(Offset(prev_layer-1), prev_layer,


Offset(prev_layer+1))`

Note that `-1` and `[-1]` are different

## <a name="basic_layers"></a>basic_layers

- **input**: `basic_layers.XconfigInputLayer`
- Attributes:
- `name=<str>`
- `dim=<int>`
- Example usages:

```
input name=input dim=40
input name=ivector dim=100
```
- **output**: `basic_layers.XconfigTrivialOutputLayer`
- Attributes:
- `name=<str>`
- `input=<str>`: `[-1]` means output the most recent layer
- `objective-type=<linear|quadratic>`: quadratic is for regression
- `output-delay=<int>`: shift the frames on the output, this would increase
the latency
- Comments: No transformation involved
- Example usages:

```
output name=output input=Append(input@-1, input@0, input@1,
ReplaceIndex(ivector, t, 0))
```
- **output-layer**: `basic_layers.XconfigOutputLayer`
- Attributes:
- `name=<str>`
- `input=<str>`: `[-1]` means output the most recent layer
- `dim=<int>`: normally equal the number of pdfs
- `bottleneck-dim=<int>`: if specified, use linear component instead of
affine one, constrained to be orthonormal
- `orthonormal-constraint=<float>`: only used if `bottleneck-dim` is set
- `include-log-softmax=<true|false>`: `false` is useful for chain models
- `objective-type=<linear|quadratic>`: quadratic is for regression
- `learning-rate-factor=<float>`: use `0.5/xent_regularize` for output layers
in chain models
- `max-change=<float>`: how much the matrix change in each iteration
- `l2-regularize=<float>`
- `output-delay=<int>`: shift the frames on the output, this would increase
the latency
- `ng-affine-options`: supply options to affine layers
- `ng-linear-options`: supply options to linear layers (if `bottleneck-dim`
is supplied)
- `param-stddev=<float>`
- `bias-stddev=<float>`

- Comments: No transformation involved


- Example usages:

```
output name=output input=Append(input@-1, input@0, input@1,
ReplaceIndex(ivector, t, 0))
```
- **relu, renorm, tanh, sigmoid, batchnorm, so, dropout** :
`basic_layers.XconfigBasicLayer`
- Combination of nonlinearities
- **relu-layer**
- **relu-renorm-layer**
- **relu-batchnorm-dropout-layer**
- **relu-dropout-layer**
- **relu-batchnorm-layer**
- **relu-batchnorm-so-layer**
- **batchnorm-so-relu-layer**
- **sigmoid-layer**
- **tanh-layer**

- Attributes:
- `input=<str>`
- `dim=<int>`
- `self-repair-scale=<float>`
- `target-rms=<float>`
- `ng-affine-options`
- `ng-linear-options`
- `dropout-proportion=<float>`
- `dropout-per-dim=<true|false>`
- `dropout-per-dim-continuous=<true|false>`
- `add-log-stddev=<true|false>`
- `bias-stddev=<float>`
- `l2-regularize=<float>`
- `learning-rate-factor=<float>`
- `max-change=<float>`

- Example Usages:

```
relu-renorm-layer name=layer1 dim=1024 input=Append(-3,0,3)

sigmoid-layer name=layer1 dim=1024 input=Append(-3,0,3)


```

- **fixed-affine-layer** : `basic_layers.XconfigFixedAffineLayer`
- Attributes:
- `input=<str>`
- `dim=<int>`
- `affine-transform-file=<path>`: output path, the file will not be
read
- `delay=<int>`: optional delay for the `output-node` in `init.config`
- `write-init-config=<true|false>`
- Example usages:

```
fixed-affine-layer name=lda input=Append(-2,-
1,0,1,2,ReplaceIndex(ivector, t, 0)) affine-transform-file=foo/bar/lda.mat
```

- **affine-layer** : `basic_layers.XconfigAffineLayer`
- Attributes:
- `input=<str>`
- `dim=<int>`
- `param-stddev=<float>`: this has to be initialized to
`1/sqrt(input_dim)`
- `bias-stddev=<float>`
- `bias-mean=<float>`
- `max-change=<float>`
- `l2-regularize=<float>`
- `learning-rate-factor=<float>`
- `ng-affine-options`
- Example usages:

```
affine-layer name=affine input=Append(-2,-1,0,1,2,ReplaceIndex(ivector,
t, 0))
```

- **idct-layer** : `basic_layers.XconfigIdctLayer`
- Attributes:
- `input=<str>`
- `dim=<int>`
- `cepstral-lifter=<float>`: liftering coefficinet
- `affine-transform-file=<path>`: output path, the file will not be
read
- Example usages:

```
idct-layer name=idct dim=40 cepstral-lifter=22 affine-transform-
file=foo/bar/idct.mat
```

#`lstm`

- **lstm-layer**: `lstm.XconfigLstmLayer`
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-element-scale-options`
- `ng-affine-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `l2-regularize=<float>`
- `decay-time=<float>`
- Example usages:

```
lstm-layer name=lstm1 input=[-1] delay=-3
```

- **lstmp-layer, lstmp-batchnorm-layer**: `lstm.XconfigLstmpLayer`


- Comments: use the `fast-*` versions below
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `recurrent-projection-dim=<int>`
- `non-recurrent-projection-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-element-scale-options`
- `ng-affine-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `dropout-proportion=<float>`
- `dropout-per-frame=<true|false>`
- `l2-regularize=<float>`
- `decay-time=<float>`
- Example usages:

```
lstmp-layer name=lstm1 input=[-1] delay=-3
```

- **fast-lstm-layer, fast-lstm-batchnorm-layer**: `lstm.XconfigFastLstmLayer`


- Comments: use the `fast-*` versions below
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `clipping-threshold=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `delay=<int>`
- `lstm-nonlinearity-options`
- `ng-affine-options`
- `l2-regularize=<float>`
- `decay-time=<float>`
- Example usages:

```
fast-lstm-layer name=lstm1 input=[-1] delay=-3
```

- **fast-lstmp-layer, fast-lstmp-batchnorm-layer**: `lstm.XconfigFastLstmpLayer`


- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `recurrent-projection-dim=<int>`
- `non-recurrent-projection-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `lstm-nonlinearity-options`
- `ng-affine-options`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `dropout-proportion=<float>`
- `l2-regularize=<float>`
- `decay-time=<float>`
- Example usages:

```
fast-lstmp-layer name=lstm1 input=[-1] delay=-3

fast-lstmp-layer name=lstm1 input=[-1] delay=-3 cell-dim=1024


recurrent-projection-dim=512 \
non-recurrent-projection-dim=512
```

- **lstmb-layer**: `lstm.XconfigLstmbLayer`
- Comments: this type of layers already contain **batch normalization**
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `bottleneck-dim=<int>`
- `clipping-threshold=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `orthonormal-constraint=<float>`
- `delay=<int>`
- `lstm-nonlinearity-options`
- `self-scale=<float>`
- `ng-affine-options`
- `l2-regularize=<float>`
- `decay-time=<float>`
- Example usages:
```
lstmb-layer name=lstm1 input=[-1] delay=-3
```

# `stats_layer`

- **stats-layer**: `stats_layer.XconfigStatsLayer`
- Attributes:
- `input=<str>`
- `dim=<int>`
- `config=<str>`: the following are supported statistics
- `mean`
- `mean+stddev`
- `mean+count`
- `mean+stddev+count`
- Example usages:

```
stats-layer name=tdnn1-stats config=mean+stddev(-99:3:9:99) input=tdnn1
```

# `convolution`

- **relu-conv-layer, conv-layer, conv-relu-layer, conv-renorm-layer, relu-conv-


renorm-layer, batchnorm-conv-layer, conv-relu-renorm-layer, batchnorm-conv-relu-
layer, relu-batchnorm-conv-layer, relu-batchnorm-noconv-layer, conv-relu-batchnorm-
so-layer, conv-relu-batchnorm-dropout-layer, conv-relu-dropout-layer**:
`convolution.XconfigConvLayer`

- Attributes:
- `input=<str>`
- `height-in=<int>`
- `height-subsample-out=<int>`
- `height-offsets=<int>`
- `num-filters-outj=<int>`
- `time-offsets=<int>`
- `required-time-offsets=<int>`
- `target-rms=<float>`
- `self-repair-scale=<float>`
- `self-repair-lower-threshold=<float>`
- `param-stddev=<float>`
- `bias-stddev=<float>`
- `max-change=<float>`
- `learning-rate-factor=<float>`
- `use-natural-gradient=<true|false>`
- `rank-in=<int>`
- `rank-out<int>`
- `num-minibatches-history=<int>`
- `alpha-in`
- `alpha-out`
- `l2-regularize=<float>`
- `dropout-proportion=<float>`
- Example usages:

```
conv-batchnorm-layer name=conv2 height-in=40 height-out=40 num-filters-
out=64 \
height-offsets=-1,0,1 time-offsets=-
1,0,1 required-time-offsets=0
```

- **res-block**: `convolution.XconfigResBlock`
- Attributes:
- `input=<str>`
- `height=<int>`
- `num-filters=<int>`
- `num-bottleneck-filters=<int>`
- `time-period=<int>`
- `height-period=<int>`
- `self-repair-scale=<float>`
- `self-repair-lower-threshold1=<float>`
- `self-repair-lower-threshold2=<float>`
- `self-repair-lower-threshold3=<float>`
- `max-change=<float>`
- `allow-zero-padding=<true|false>`
- `bypass-source`
- `param-stddev`
- `bias-stddev`
- `use-natural-gradient`
- `rank-in`
- `rank-out`
- `num-minibatches-history`
- `alpha-in`
- `alpha-out`
- `l2-regularize`
- Example usage:

```
res-block name=res1 num-filters=64 height=32 time-period=1
```
- **res2-block**: `convolution.XconfigRes2Block`
- Attributes:
- `input=<str>`
- `height=<int>`
- `height-in=<int>`
- `height-out=<int>`
- `num-filters=<int>`
- `num-bottleneck-filters=<int>`
- `time-period=<int>`
- `self-repair-scale=<float>`
- `self-repair-lower-threshold1=<float>`
- `self-repair-lower-threshold2=<float>`
- `self-repair-lower-threshold3=<float>`
- `max-change=<float>`
- `allow-zero-padding=<true|false>`
- `param-stddev`
- `bias-stddev`
- `use-natural-gradient`
- `rank-in`
- `rank-out`
- `num-minibatches-history`
- `alpha-in`
- `alpha-out`
- `l2-regularize`
- Example usage:

```
res2-block name=res1 num-filters=64 height=32 time-period=1
```

- **channel-average-layer**: `convolution.ChannelAverageLayer`
- Attributes:
- `input=<str>`
- `dim=<int>`
- Example usage:

```
channel-average-layer name=channel-average input=Append(2, 4, 6, 8)
dim=64
```

# `attention`

- **attention-renorm-layer, attention-relu-renorm-layer, relu-renorm-attention-


layer, relu-renorm-attention-layer**: `attention.XconfigAttentionLayer`
- Attributes
- `input=<str>`
- `dim=<int>`
- `max-change=<float>`
- `self-repair-scale=<float>`
- `target-rms=<float>`
- `learning-rate-factor=<float>`
- `ng-affine-options`
- `l2-regularize=<float>`
- `num-left-inputs-required=<int>`
- `num-right-inputs-required=<int>`
- `output-context=<true|false>`
- `time-stride=<int>`
- `num-heads=<int>`
- `key-dim=<int>`
- `key-scale=<float>`
- `value-dim=<int>`
- `num-left-inputs=<int>`
- `num-right-inputs=<int>`
- `dropout-proportion=<float>`
- Example usage

```
attention-renorm-layer num-heads=10 value-dim=50 key-dim=50 time-
stride=3 \
num-left-inputs=5 num-right-
inputs=2.
```

# `gru`

- **gru-layer**: `gru.XconfigGruLayer`
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-elemnet-scale-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- Example usage:

```
gru-layer name=gru1 input=[-1] delay=-3
```

- **pgru-layer**: `gru.XconfigPgruLayer`
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `recurrent-projection-dim=<int>`
- `non-recurrent-projection-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-elemnet-scale-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`

- Example usage:

```
pgru-layer name=pgru1 input=[-1] delay=-3
```
- **norm-pgru-layer**: `gru.XconfigNormPgruLayer`
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `recurrent-projection-dim=<int>`
- `non-recurrent-projection-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-elemnet-scale-options`
- `ng-affine-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `dropout-proportion=<float>`
- `dropout-per-frame=<true|false>`

- Example usage:

```
norm-pgru-layer name=norm-pgru1 input=[-1] delay=-3
```

- **opgru-layer** : `gru.XconfigOpgruLayer`
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `recurrent-projection-dim=<int>`
- `non-recurrent-projection-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-elemnet-scale-options`
- `ng-affine-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- Example usage:

```
opgru-layer name=opgru1 input=[-1] delay=-3
```
- **norm-opgru-layer**: `gru.XconfigNormOpgruLayer`
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `recurrent-projection-dim=<int>`
- `non-recurrent-projection-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-elemnet-scale-options`
- `ng-affine-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `dropout-proportion=<float>`
- `l2-regularize=<float>`
- `dropout-per-frame=<true|false>`

- Example usage:

```
norm-opgru-layer name=norm-opgru1 input=[-1] delay=-3
```

- **fast-gru-layer** : `gru.XconfigFastGruLayer`
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-elemnet-scale-options`
- `ng-affine-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `gru-nonlinearity-options`

- Example usage:

```
fast-gru-layer name=gru1 input=[-1] delay=-3
```
- **fast-pgru-layer** : `gru.XconfigFastPgruLayer`
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `recurrent-projection-dim=<int>`
- `non-recurrent-projection-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-elemnet-scale-options`
- `ng-affine-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `gru-nonlinearity-options`

- Example usage:

```
fast-pgru-layer name=pgru1 input=[-1] delay=-3
```
- **fast-norm-pgru-layer** : `gru.XconfigFastNormPgruLayer`
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `recurrent-projection-dim=<int>`
- `non-recurrent-projection-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-elemnet-scale-options`
- `ng-affine-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `gru-nonlinearity-options`
- `dropout-proportion=<float>`
- `dropout-per-frame=<true|false>`

- Example usage:

```
fast-norm-pgru-layer name=pgru1 input=[-1] delay=-3
```

- **fast-opgru-layer** : `gru.XconfigFastOpgruLayer`
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `recurrent-projection-dim=<int>`
- `non-recurrent-projection-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-elemnet-scale-options`
- `ng-affine-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `dropout-per-frame=<true|false>`
- Example usage:

```
fast-opgru-layer name=opgru1 input=[-1] delay=-3
```
- **fast-norm-opgru-layer**: `gru.XconfigFastNormOpgruLayer`
- Attributes:
- `input=<str>`
- `cell-dim=<int>`
- `recurrent-projection-dim=<int>`
- `non-recurrent-projection-dim=<int>`
- `clipping-threshold=<float>`
- `delay=<int>`
- `ng-per-elemnet-scale-options`
- `ng-affine-options`
- `self-repair-scale-nonlinearity=<float>`
- `zeroing-interval=<int>`
- `zeroing-threshold=<float>`
- `gru-nonlinearity-options`
- `dropout-proportion=<float>`
- `dropout-per-frame=<true|false>`

- Example usage:

```
fast-norm-opgru-layer name=opgru1 input=[-1] delay=-3
```

#`composite_layers`

- **tdnnf-layer**: `composite_layers.XconfigTdnnfLayer`
- Attributes:
- `input=<str>`
- `dim=<int>`
- `bottleneck-dim=<int>`
- `bypass-scale=<float>`
- `dropout-proportion=<float>`
- `time-stride=<int>`
- `l2-regularize=<float>`
- `max-change=<float>`
- `self-repair-scale=<float>`
- Example usage:

```
tdnnf-layer name=tdnnf2 dim=1024 bottleneck-dim=128 dropout-
proportion=0.0 time-stride=3
```
roughly equal to the following

```
linear-component name=tdnnf2.linear dim=128 orthonormal-constraint=-1.0
\
input=Append(Offset(-3, tdnnf1), tdnnf1)
relu-batchnorm-dropout-layer name=tdnnf2.affine dim=1024 dropout-
proportion=0.0 \
dropout-per-dim-
continuous=true input=Append(0,3)
no-op-component name=tdnnf2 input=Sum(Scale(0.66,tdnnf1), tdnn2.affine)
```

- **prefinal-layer**: `composite_layers.XconfigPrefinalLayer`
- Attributes:
- `input=<str>`
- `big-dim=<int>`
- `small-dim=<int>`
- `l2-regularize=<float>`
- `max-change=<float>`
- `self-repair-scale=<float>`
- Example usage:

```
prefinal-layer name=prefinal-chain input=prefinal-l l2-regularize=0.02
big-dim=1024 small-dim=256
```

roughly equal to the following

```
relu-batchnorm-layer name=prefinal-chain input=prefinal-l l2-
regularize=0.02 dim=1024
linear-comonent name=prefinal-chain-l dim=256 l2-regularize=0.02
orthonormal-constraint=-1.0
batchnorm-component name=prefinal-chain-batchnorm
```

#`trivial_layers`

- **renorm-component**: `trivial_layers.XconfigRenormComponent`
- Attributes:
- `input=<int>`
- `target-rms=<float>`
- Example usage:

```
renorm-component name=renorm1 input=Append(-3,0,3)
```
- **batchnorm-component**: `trivial_layers.XconfigBatchnormComponent`
- Attributes:
- `input=<int>`
- `target-rms=<float>`
- Example usage:

```
batchnorm-component name=batchnorm input=Append(-3,0,3)
```
- **no-op-component**: `trivial_layers.XconfigNoOpComponent`
- Attributes:
- `input=<int>`
- Example usage:

```
no-op-component name=noop1 input=Append(-3,0,3)
```
- **linear-component**: `trivial_layers.XconfigLinearComponent`
- Attributes:
- `input=<int>`
- `dim=<int>`
- `orthonormal-constraint=<float>`
- `max-change=<float>`
- `l2-regularize=<float>`
- `param-stddev=<float>`
- `learning-rate-factor=<float>`
- Example usage:

```
linear-component name=linear1 dim=1024 input=Append(-3,0,3)
```
- **affine-component**: `trivial_layers.XconfigAffineComponent`
- Attributes:
- `input=<int>`
- `dim=<int>`
- `orthonormal-constraint`
- `max-change=<float>`
- `param-stddev`
- `bias-stddev`
- `l2-regularize`
- Example usage:

```
affine-component name=linear1 dim=1024 input=Append(-3,0,3)
```
- **scale-component**: `trivial_layers.XconfigPerElementScaleComponent`
- Attributes:
- `input=<int>`
- `l2-regularize`
- `max-change=<float>`
- `param-mean`
- `param-stddev`
- `learning-rate-factor`
- Example usage:

```
scale-component name=scale1 input=Append(-3,0,3)
```
- **dim-range-component**: `trivial_layers.XconfigDimRangeComponent`
- Attributes:
- `input=<int>`
- `dim=<int>`
- `dim-offset=<int>`
- Example usage:

```
dim-range-component name=feature1 input=Append(-3,0,3) dim=40 dim-
offset=0
```
- **offset-component**: `trivial_layers.XconfigPerElementOffsetComponent`
- Attributes:
- `input=<int>`
- `l2-regularize`
- `max-change=<float>`
- `param-mean`
- `param-stddev`
- `learning-rate-factor`
- Example usage:

```
offset-component name=offset1 input=Append(-3,0,3)
```
- **combine-feature-maps-layer**: `trivial_layers.XconfigCombineFeatureMapsLayer`
- Attributes:
- `input=<str>`
- `num-filters1=<int>`
- `num-filters2=<int>`
- `num-filters3=<int>`
- `height=<int>`
- Example usage:

```
combine-feature-maps-layer name=combine_features1 height=40 num-
filters1=1 num-filters2=4
combine-feature-maps-layer name=combine_features1 height=40 num-
filters1=1 \
num-filters2=4 num-filters3=2
```

You might also like