For use in clockwork RNNs and the like, this forwarding-descriptor rounds the time-index t down to the the closest t' <= t that is an exact multiple of t_modulus_. More...
#include <nnet-descriptor.h>
Public Member Functions | |
virtual Cindex | MapToInput (const Index &ind) const |
virtual int32 | Dim (const Nnet &nnet) const |
virtual ForwardingDescriptor * | Copy () const |
virtual void | WriteConfig (std::ostream &os, const std::vector< std::string > &node_names) const |
virtual int32 | Modulus () const |
This function is for use in things like clockwork RNNs, where shifting the time of the inputs and outputs of the network by some multiple integer n would leave things the same, but shifting by non-multiples would change the network structure. More... | |
virtual void | GetNodeDependencies (std::vector< int32 > *node_indexes) const |
This function appends to "node_indexes" all the node indexes. More... | |
virtual BaseFloat | GetScaleForNode (int32 node_index) const |
This function returns the scale on the node-index 'node_index' when it appears in expressions inside this descriptor, or +infinity if it does not appear. More... | |
RoundingForwardingDescriptor (ForwardingDescriptor *src, int32 t_modulus) | |
virtual | ~RoundingForwardingDescriptor () |
Public Member Functions inherited from ForwardingDescriptor | |
virtual | ~ForwardingDescriptor () |
ForwardingDescriptor () | |
Private Attributes | |
ForwardingDescriptor * | src_ |
int32 | t_modulus_ |
For use in clockwork RNNs and the like, this forwarding-descriptor rounds the time-index t down to the the closest t' <= t that is an exact multiple of t_modulus_.
Written form is: `Round(<descriptor>, <t-modulus>)` e.g.: `Round(tdnn2, 3)`
Definition at line 242 of file nnet-descriptor.h.
|
inline |
Definition at line 259 of file nnet-descriptor.h.
|
inlinevirtual |
Definition at line 263 of file nnet-descriptor.h.
|
virtual |
Implements ForwardingDescriptor.
Definition at line 203 of file nnet-descriptor.cc.
Implements ForwardingDescriptor.
Definition at line 245 of file nnet-descriptor.h.
References ForwardingDescriptor::Copy(), and ForwardingDescriptor::WriteConfig().
|
virtual |
This function appends to "node_indexes" all the node indexes.
Implements ForwardingDescriptor.
Definition at line 182 of file nnet-descriptor.cc.
This function returns the scale on the node-index 'node_index' when it appears in expressions inside this descriptor, or +infinity if it does not appear.
E.g. if the descriptor is just `Scale(tdnn2, 2.0)` and the node index for `tdnn2` is 4, then GetScaleForNode(4) would return 2.0. If a particular node_index > 0 appears in different sub-expressions of the descriptor with different scales it is an error (it's not supported) and this function would crash.
Implements ForwardingDescriptor.
Definition at line 187 of file nnet-descriptor.cc.
Implements ForwardingDescriptor.
Definition at line 192 of file nnet-descriptor.cc.
References KALDI_ASSERT, and Index::t.
|
inlinevirtual |
This function is for use in things like clockwork RNNs, where shifting the time of the inputs and outputs of the network by some multiple integer n would leave things the same, but shifting by non-multiples would change the network structure.
It returns the smallest modulus to which this descriptor is invariant; the lowest common multiple of all descriptors in the network gives you the modulus for the whole network.
Reimplemented from ForwardingDescriptor.
Definition at line 251 of file nnet-descriptor.h.
References ForwardingDescriptor::GetNodeDependencies(), and ForwardingDescriptor::GetScaleForNode().
|
virtual |
Implements ForwardingDescriptor.
Definition at line 207 of file nnet-descriptor.cc.
|
private |
Definition at line 265 of file nnet-descriptor.h.
|
private |
Definition at line 266 of file nnet-descriptor.h.