This Component, if present, randomly zeroes half of the inputs and multiplies the other half by two. More...
#include <nnet-component.h>
Public Member Functions | |
void | Init (int32 dim, BaseFloat dropout_proportion=0.5, BaseFloat dropout_scale=0.0) |
dropout-proportion is the proportion that is dropped out, e.g. More... | |
DropoutComponent (int32 dim, BaseFloat dp=0.5, BaseFloat sc=0.0) | |
DropoutComponent () | |
virtual int32 | InputDim () const |
Get size of input vectors. More... | |
virtual int32 | OutputDim () const |
Get size of output vectors. More... | |
virtual void | InitFromString (std::string args) |
Initialize, typically from a line of a config file. More... | |
virtual void | Read (std::istream &is, bool binary) |
virtual void | Write (std::ostream &os, bool binary) const |
Write component to stream. More... | |
virtual std::string | Type () const |
void | SetDropoutScale (BaseFloat scale) |
virtual bool | BackpropNeedsInput () const |
virtual bool | BackpropNeedsOutput () const |
virtual Component * | Copy () const |
Copy component (deep copy). More... | |
virtual void | Propagate (const ChunkInfo &in_info, const ChunkInfo &out_info, const CuMatrixBase< BaseFloat > &in, CuMatrixBase< BaseFloat > *out) const |
Perform forward pass propagation Input->Output. More... | |
virtual void | Backprop (const ChunkInfo &in_info, const ChunkInfo &out_info, const CuMatrixBase< BaseFloat > &in_value, const CuMatrixBase< BaseFloat > &out_value, const CuMatrixBase< BaseFloat > &out_deriv, Component *to_update, CuMatrix< BaseFloat > *in_deriv) const |
Perform backward pass propagation of the derivative, and also either update the model (if to_update == this) or update another model or compute the model derivative (otherwise). More... | |
virtual std::string | Info () const |
Public Member Functions inherited from RandomComponent | |
void | ResetGenerator () |
Public Member Functions inherited from Component | |
Component () | |
virtual int32 | Index () const |
Returns the index in the sequence of layers in the neural net; intended only to be used in debugging information. More... | |
virtual void | SetIndex (int32 index) |
virtual std::vector< int32 > | Context () const |
Return a vector describing the temporal context this component requires for each frame of output, as a sorted list. More... | |
void | Propagate (const ChunkInfo &in_info, const ChunkInfo &out_info, const CuMatrixBase< BaseFloat > &in, CuMatrix< BaseFloat > *out) const |
A non-virtual propagate function that first resizes output if necessary. More... | |
virtual | ~Component () |
Private Attributes | |
int32 | dim_ |
BaseFloat | dropout_proportion_ |
BaseFloat | dropout_scale_ |
Additional Inherited Members | |
Static Public Member Functions inherited from Component | |
static Component * | ReadNew (std::istream &is, bool binary) |
Read component from stream. More... | |
static Component * | NewFromString (const std::string &initializer_line) |
Initialize the Component from one line that will contain first the type, e.g. More... | |
static Component * | NewComponentOfType (const std::string &type) |
Return a new Component of the given type e.g. More... | |
Protected Attributes inherited from RandomComponent | |
CuRand< BaseFloat > | random_generator_ |
This Component, if present, randomly zeroes half of the inputs and multiplies the other half by two.
Typically you would use this in training but not in test or when computing validation-set objective functions.
Definition at line 1584 of file nnet-component.h.
|
inline |
Definition at line 1595 of file nnet-component.h.
|
inline |
Definition at line 1598 of file nnet-component.h.
|
virtual |
Perform backward pass propagation of the derivative, and also either update the model (if to_update == this) or update another model or compute the model derivative (otherwise).
Note: in_value and out_value are the values of the input and output of the component, and these may be dummy variables if respectively BackpropNeedsInput() or BackpropNeedsOutput() return false for that component (not all components need these).
num_chunks lets us treat the input matrix as contiguous-in-time chunks of equal size; it only matters if splicing is involved.
Implements Component.
Definition at line 3566 of file nnet-component.cc.
References KALDI_ASSERT, CuMatrixBase< Real >::NumCols(), CuMatrixBase< Real >::NumRows(), CuMatrix< Real >::Resize(), kaldi::SameDim(), and CuMatrixBase< Real >::SetMatMatDivMat().
|
inlinevirtual |
Reimplemented from Component.
Definition at line 1610 of file nnet-component.h.
|
inlinevirtual |
Reimplemented from Component.
Definition at line 1611 of file nnet-component.h.
References kaldi::cu::Copy(), and Component::Propagate().
|
virtual |
Copy component (deep copy).
Implements Component.
Definition at line 3578 of file nnet-component.cc.
|
virtual |
Reimplemented from Component.
Definition at line 3479 of file nnet-component.cc.
References Component::Info().
dropout-proportion is the proportion that is dropped out, e.g.
if 0.1, we set 10% to a low value. [note, in some older code it was interpreted as the value not dropped out, so be careful.] The low scale-value is equal to dropout_scale. The high scale-value is chosen such that the expected scale-value is one.
Definition at line 3523 of file nnet-component.cc.
|
virtual |
Initialize, typically from a line of a config file.
The "args" will contain any parameters that need to be passed to the Component, e.g. dimensions.
Implements Component.
Definition at line 3487 of file nnet-component.cc.
References AffineComponentPreconditionedOnline::Init(), KALDI_ERR, and kaldi::nnet2::ParseFromString().
Referenced by kaldi::nnet2::UnitTestDropoutComponent().
|
inlinevirtual |
|
inlinevirtual |
|
virtual |
Perform forward pass propagation Input->Output.
Each row is one frame or training example. Interpreted as "num_chunks" equally sized chunks of frames; this only matters for layers that do things like context splicing. Typically this variable will either be 1 (when we're processing a single contiguous chunk of data) or will be the same as in.NumFrames(), but other values are possible if some layers do splicing.
Implements Component.
Definition at line 3531 of file nnet-component.cc.
References CuMatrixBase< Real >::Add(), CuMatrixBase< Real >::ApplyHeaviside(), ChunkInfo::CheckSize(), AffineComponent::InputDim(), KALDI_ASSERT, CuMatrixBase< Real >::MulElements(), ChunkInfo::NumChunks(), CuMatrixBase< Real >::NumCols(), kaldi::RandUniform(), and CuMatrixBase< Real >::Scale().
|
virtual |
Implements Component.
Definition at line 3501 of file nnet-component.cc.
References kaldi::nnet2::ExpectOneOrTwoTokens(), kaldi::ExpectToken(), and kaldi::ReadBasicType().
|
inline |
Definition at line 1609 of file nnet-component.h.
Referenced by Nnet::SetDropoutScale().
|
inlinevirtual |
Implements Component.
Definition at line 1607 of file nnet-component.h.
|
virtual |
Write component to stream.
Implements Component.
Definition at line 3511 of file nnet-component.cc.
References kaldi::WriteBasicType(), and kaldi::WriteToken().
|
private |
Definition at line 1627 of file nnet-component.h.
|
private |
Definition at line 1628 of file nnet-component.h.
|
private |
Definition at line 1629 of file nnet-component.h.