Component with recurrent connections, 'tanh' non-linearity. More...
#include <nnet-recurrent.h>
Public Member Functions | |
RecurrentComponent (int32 input_dim, int32 output_dim) | |
~RecurrentComponent () | |
Component * | Copy () const |
Copy component (deep copy),. More... | |
ComponentType | GetType () const |
Get Type Identification of the component,. More... | |
void | InitData (std::istream &is) |
Initialize the content of the component by the 'line' from the prototype,. More... | |
void | ReadData (std::istream &is, bool binary) |
Reads the component content. More... | |
void | WriteData (std::ostream &os, bool binary) const |
Writes the component content. More... | |
int32 | NumParams () const |
Number of trainable parameters,. More... | |
void | GetGradient (VectorBase< BaseFloat > *gradient) const |
Get gradient reshaped as a vector,. More... | |
void | GetParams (VectorBase< BaseFloat > *params) const |
Get the trainable parameters reshaped as a vector,. More... | |
void | SetParams (const VectorBase< BaseFloat > ¶ms) |
Set the trainable parameters from, reshaped as a vector,. More... | |
std::string | Info () const |
Print some additional info (after <ComponentName> and the dims),. More... | |
std::string | InfoGradient () const |
Print some additional info about gradient (after <...> and dims),. More... | |
void | PropagateFnc (const CuMatrixBase< BaseFloat > &in, CuMatrixBase< BaseFloat > *out) |
Abstract interface for propagation/backpropagation. More... | |
void | BackpropagateFnc (const CuMatrixBase< BaseFloat > &in, const CuMatrixBase< BaseFloat > &out, const CuMatrixBase< BaseFloat > &out_diff, CuMatrixBase< BaseFloat > *in_diff) |
Backward pass transformation (to be implemented by descending class...) More... | |
void | Update (const CuMatrixBase< BaseFloat > &input, const CuMatrixBase< BaseFloat > &diff) |
Compute gradient and update parameters,. More... | |
Public Member Functions inherited from MultistreamComponent | |
MultistreamComponent (int32 input_dim, int32 output_dim) | |
bool | IsMultistream () const |
Check if component has 'Recurrent' interface (trainable and recurrent),. More... | |
virtual void | SetSeqLengths (const std::vector< int32 > &sequence_lengths) |
int32 | NumStreams () const |
virtual void | ResetStreams (const std::vector< int32 > &stream_reset_flag) |
Optional function to reset the transfer of context (not used for BLSTMs. More... | |
Public Member Functions inherited from UpdatableComponent | |
UpdatableComponent (int32 input_dim, int32 output_dim) | |
virtual | ~UpdatableComponent () |
bool | IsUpdatable () const |
Check if contains trainable parameters,. More... | |
virtual void | SetTrainOptions (const NnetTrainOptions &opts) |
Set the training options to the component,. More... | |
const NnetTrainOptions & | GetTrainOptions () const |
Get the training options from the component,. More... | |
virtual void | SetLearnRateCoef (BaseFloat val) |
Set the learn-rate coefficient,. More... | |
virtual void | SetBiasLearnRateCoef (BaseFloat val) |
Set the learn-rate coefficient for bias,. More... | |
Public Member Functions inherited from Component | |
Component (int32 input_dim, int32 output_dim) | |
Generic interface of a component,. More... | |
virtual | ~Component () |
int32 | InputDim () const |
Get the dimension of the input,. More... | |
int32 | OutputDim () const |
Get the dimension of the output,. More... | |
void | Propagate (const CuMatrixBase< BaseFloat > &in, CuMatrix< BaseFloat > *out) |
Perform forward-pass propagation 'in' -> 'out',. More... | |
void | Backpropagate (const CuMatrixBase< BaseFloat > &in, const CuMatrixBase< BaseFloat > &out, const CuMatrixBase< BaseFloat > &out_diff, CuMatrix< BaseFloat > *in_diff) |
Perform backward-pass propagation 'out_diff' -> 'in_diff'. More... | |
void | Write (std::ostream &os, bool binary) const |
Write the component to a stream,. More... | |
Private Attributes | |
BaseFloat | grad_clip_ |
Clipping of the update,. More... | |
BaseFloat | diff_clip_ |
Clipping in the BPTT loop,. More... | |
CuMatrix< BaseFloat > | w_forward_ |
CuMatrix< BaseFloat > | w_recurrent_ |
CuVector< BaseFloat > | bias_ |
CuMatrix< BaseFloat > | w_forward_corr_ |
CuMatrix< BaseFloat > | w_recurrent_corr_ |
CuVector< BaseFloat > | bias_corr_ |
CuMatrix< BaseFloat > | out_ |
CuMatrix< BaseFloat > | out_diff_bptt_ |
Additional Inherited Members | |
Public Types inherited from Component | |
enum | ComponentType { kUnknown = 0x0, kUpdatableComponent = 0x0100, kAffineTransform, kLinearTransform, kConvolutionalComponent, kLstmProjected, kBlstmProjected, kRecurrentComponent, kActivationFunction = 0x0200, kSoftmax, kHiddenSoftmax, kBlockSoftmax, kSigmoid, kTanh, kParametricRelu, kDropout, kLengthNormComponent, kTranform = 0x0400, kRbm, kSplice, kCopy, kTranspose, kBlockLinearity, kAddShift, kRescale, kKlHmm = 0x0800, kSentenceAveragingComponent, kSimpleSentenceAveragingComponent, kAveragePoolingComponent, kMaxPoolingComponent, kFramePoolingComponent, kParallelComponent, kMultiBasisComponent } |
Component type identification mechanism,. More... | |
Static Public Member Functions inherited from Component | |
static const char * | TypeToMarker (ComponentType t) |
Converts component type to marker,. More... | |
static ComponentType | MarkerToType (const std::string &s) |
Converts marker to component type (case insensitive),. More... | |
static Component * | Init (const std::string &conf_line) |
Initialize component from a line in config file,. More... | |
static Component * | Read (std::istream &is, bool binary) |
Read the component from a stream (static method),. More... | |
Static Public Attributes inherited from Component | |
static const struct key_value | kMarkerMap [] |
The table with pairs of Component types and markers (defined in nnet-component.cc),. More... | |
Protected Attributes inherited from MultistreamComponent | |
std::vector< int32 > | sequence_lengths_ |
Protected Attributes inherited from UpdatableComponent | |
NnetTrainOptions | opts_ |
Option-class with training hyper-parameters,. More... | |
BaseFloat | learn_rate_coef_ |
Scalar applied to learning rate for weight matrices (to be used in ::Update method),. More... | |
BaseFloat | bias_learn_rate_coef_ |
Scalar applied to learning rate for bias (to be used in ::Update method),. More... | |
Protected Attributes inherited from Component | |
int32 | input_dim_ |
Data members,. More... | |
int32 | output_dim_ |
Dimension of the output of the Component,. More... | |
Component with recurrent connections, 'tanh' non-linearity.
No internal state preserved, starting each sequence from zero vector.
Can be used in 'per-sentence' training and multi-stream training.
Definition at line 43 of file nnet-recurrent.h.
|
inline |
Definition at line 45 of file nnet-recurrent.h.
Referenced by RecurrentComponent::Copy().
|
inline |
Definition at line 49 of file nnet-recurrent.h.
|
inlinevirtual |
Backward pass transformation (to be implemented by descending class...)
Implements Component.
Definition at line 243 of file nnet-recurrent.h.
References CuMatrixBase< Real >::AddMatMat(), CuMatrixBase< Real >::ApplyCeiling(), CuMatrixBase< Real >::ApplyFloor(), RecurrentComponent::diff_clip_, CuMatrixBase< Real >::DiffTanh(), kaldi::kNoTrans, CuMatrixBase< Real >::NumRows(), MultistreamComponent::NumStreams(), RecurrentComponent::out_diff_bptt_, CuMatrixBase< Real >::RowRange(), MultistreamComponent::sequence_lengths_, RecurrentComponent::w_forward_, and RecurrentComponent::w_recurrent_.
|
inlinevirtual |
Copy component (deep copy),.
Implements Component.
Definition at line 52 of file nnet-recurrent.h.
References RecurrentComponent::RecurrentComponent().
|
inlinevirtual |
Get gradient reshaped as a vector,.
Implements UpdatableComponent.
Definition at line 133 of file nnet-recurrent.h.
References RecurrentComponent::bias_corr_, VectorBase< Real >::Dim(), KALDI_ASSERT, RecurrentComponent::NumParams(), VectorBase< Real >::Range(), RecurrentComponent::w_forward_corr_, and RecurrentComponent::w_recurrent_corr_.
|
inlinevirtual |
Get the trainable parameters reshaped as a vector,.
Implements UpdatableComponent.
Definition at line 150 of file nnet-recurrent.h.
References RecurrentComponent::bias_, VectorBase< Real >::Dim(), KALDI_ASSERT, RecurrentComponent::NumParams(), VectorBase< Real >::Range(), RecurrentComponent::w_forward_, and RecurrentComponent::w_recurrent_.
|
inlinevirtual |
Get Type Identification of the component,.
Implements Component.
Definition at line 53 of file nnet-recurrent.h.
References Component::kRecurrentComponent.
|
inlinevirtual |
Print some additional info (after <ComponentName> and the dims),.
Reimplemented from Component.
Definition at line 184 of file nnet-recurrent.h.
References RecurrentComponent::bias_, kaldi::nnet1::MomentStatistics(), RecurrentComponent::w_forward_, and RecurrentComponent::w_recurrent_.
|
inlinevirtual |
Print some additional info about gradient (after <...> and dims),.
Reimplemented from Component.
Definition at line 191 of file nnet-recurrent.h.
References RecurrentComponent::bias_corr_, UpdatableComponent::bias_learn_rate_coef_, RecurrentComponent::diff_clip_, RecurrentComponent::grad_clip_, UpdatableComponent::learn_rate_coef_, kaldi::nnet1::MomentStatistics(), RecurrentComponent::out_, RecurrentComponent::out_diff_bptt_, kaldi::nnet1::ToString(), RecurrentComponent::w_forward_corr_, and RecurrentComponent::w_recurrent_corr_.
|
inlinevirtual |
Initialize the content of the component by the 'line' from the prototype,.
Implements UpdatableComponent.
Definition at line 55 of file nnet-recurrent.h.
References RecurrentComponent::bias_, UpdatableComponent::bias_learn_rate_coef_, RecurrentComponent::diff_clip_, RecurrentComponent::grad_clip_, Component::input_dim_, KALDI_ERR, UpdatableComponent::learn_rate_coef_, Component::output_dim_, kaldi::nnet1::RandUniform(), kaldi::ReadBasicType(), kaldi::ReadToken(), RecurrentComponent::w_forward_, and RecurrentComponent::w_recurrent_.
|
inlinevirtual |
Number of trainable parameters,.
Implements UpdatableComponent.
Definition at line 127 of file nnet-recurrent.h.
References RecurrentComponent::bias_, RecurrentComponent::w_forward_, and RecurrentComponent::w_recurrent_.
Referenced by RecurrentComponent::GetGradient(), RecurrentComponent::GetParams(), and RecurrentComponent::SetParams().
|
inlinevirtual |
Abstract interface for propagation/backpropagation.
Forward pass transformation (to be implemented by descending class...)
Implements Component.
Definition at line 207 of file nnet-recurrent.h.
References CuMatrixBase< Real >::AddMatMat(), CuMatrixBase< Real >::AddVecToRows(), RecurrentComponent::bias_, KALDI_ASSERT, kaldi::kNoTrans, kaldi::kTrans, CuMatrixBase< Real >::NumRows(), MultistreamComponent::NumStreams(), RecurrentComponent::out_, CuMatrixBase< Real >::Row(), CuMatrixBase< Real >::RowRange(), MultistreamComponent::sequence_lengths_, RecurrentComponent::w_forward_, and RecurrentComponent::w_recurrent_.
|
inlinevirtual |
Reads the component content.
Reimplemented from Component.
Definition at line 81 of file nnet-recurrent.h.
References RecurrentComponent::bias_, UpdatableComponent::bias_learn_rate_coef_, RecurrentComponent::diff_clip_, kaldi::ExpectToken(), RecurrentComponent::grad_clip_, KALDI_ERR, UpdatableComponent::learn_rate_coef_, kaldi::Peek(), kaldi::PeekToken(), kaldi::ReadBasicType(), kaldi::ReadToken(), RecurrentComponent::w_forward_, and RecurrentComponent::w_recurrent_.
|
inlinevirtual |
Set the trainable parameters from, reshaped as a vector,.
Implements UpdatableComponent.
Definition at line 167 of file nnet-recurrent.h.
References RecurrentComponent::bias_, VectorBase< Real >::Dim(), KALDI_ASSERT, RecurrentComponent::NumParams(), VectorBase< Real >::Range(), RecurrentComponent::w_forward_, and RecurrentComponent::w_recurrent_.
|
inlinevirtual |
Compute gradient and update parameters,.
Implements UpdatableComponent.
Definition at line 290 of file nnet-recurrent.h.
References RecurrentComponent::bias_, RecurrentComponent::bias_corr_, UpdatableComponent::bias_learn_rate_coef_, kaldi::kNoTrans, kaldi::kSetZero, kaldi::kTrans, NnetTrainOptions::learn_rate, UpdatableComponent::learn_rate_coef_, NnetTrainOptions::momentum, CuMatrixBase< Real >::NumRows(), MultistreamComponent::NumStreams(), UpdatableComponent::opts_, RecurrentComponent::out_, RecurrentComponent::out_diff_bptt_, Component::OutputDim(), RecurrentComponent::w_forward_, RecurrentComponent::w_forward_corr_, RecurrentComponent::w_recurrent_, and RecurrentComponent::w_recurrent_corr_.
|
inlinevirtual |
Writes the component content.
Reimplemented from Component.
Definition at line 110 of file nnet-recurrent.h.
References RecurrentComponent::bias_, UpdatableComponent::bias_learn_rate_coef_, RecurrentComponent::diff_clip_, RecurrentComponent::grad_clip_, UpdatableComponent::learn_rate_coef_, RecurrentComponent::w_forward_, RecurrentComponent::w_recurrent_, kaldi::WriteBasicType(), and kaldi::WriteToken().
Definition at line 328 of file nnet-recurrent.h.
Referenced by RecurrentComponent::GetParams(), RecurrentComponent::Info(), RecurrentComponent::InitData(), RecurrentComponent::NumParams(), RecurrentComponent::PropagateFnc(), RecurrentComponent::ReadData(), RecurrentComponent::SetParams(), RecurrentComponent::Update(), and RecurrentComponent::WriteData().
Definition at line 333 of file nnet-recurrent.h.
Referenced by RecurrentComponent::GetGradient(), RecurrentComponent::InfoGradient(), and RecurrentComponent::Update().
|
private |
Clipping in the BPTT loop,.
Definition at line 323 of file nnet-recurrent.h.
Referenced by RecurrentComponent::BackpropagateFnc(), RecurrentComponent::InfoGradient(), RecurrentComponent::InitData(), RecurrentComponent::ReadData(), and RecurrentComponent::WriteData().
|
private |
Clipping of the update,.
Definition at line 322 of file nnet-recurrent.h.
Referenced by RecurrentComponent::InfoGradient(), RecurrentComponent::InitData(), RecurrentComponent::ReadData(), and RecurrentComponent::WriteData().
Definition at line 336 of file nnet-recurrent.h.
Referenced by RecurrentComponent::InfoGradient(), RecurrentComponent::PropagateFnc(), and RecurrentComponent::Update().
Definition at line 339 of file nnet-recurrent.h.
Referenced by RecurrentComponent::BackpropagateFnc(), RecurrentComponent::InfoGradient(), and RecurrentComponent::Update().
Definition at line 326 of file nnet-recurrent.h.
Referenced by RecurrentComponent::BackpropagateFnc(), RecurrentComponent::GetParams(), RecurrentComponent::Info(), RecurrentComponent::InitData(), RecurrentComponent::NumParams(), RecurrentComponent::PropagateFnc(), RecurrentComponent::ReadData(), RecurrentComponent::SetParams(), RecurrentComponent::Update(), and RecurrentComponent::WriteData().
Definition at line 331 of file nnet-recurrent.h.
Referenced by RecurrentComponent::GetGradient(), RecurrentComponent::InfoGradient(), and RecurrentComponent::Update().
Definition at line 327 of file nnet-recurrent.h.
Referenced by RecurrentComponent::BackpropagateFnc(), RecurrentComponent::GetParams(), RecurrentComponent::Info(), RecurrentComponent::InitData(), RecurrentComponent::NumParams(), RecurrentComponent::PropagateFnc(), RecurrentComponent::ReadData(), RecurrentComponent::SetParams(), RecurrentComponent::Update(), and RecurrentComponent::WriteData().
Definition at line 332 of file nnet-recurrent.h.
Referenced by RecurrentComponent::GetGradient(), RecurrentComponent::InfoGradient(), and RecurrentComponent::Update().