Caffe
Public Member Functions | Protected Member Functions | List of all members
caffe::RNNLayer< Dtype > Class Template Reference

Processes time-varying inputs using a simple recurrent neural network (RNN). Implemented as a network unrolling the RNN computation in time. More...

#include <rnn_layer.hpp>

Inheritance diagram for caffe::RNNLayer< Dtype >:
caffe::RecurrentLayer< Dtype >

Public Member Functions

 RNNLayer (const LayerParameter &param)
 
virtual const char * type () const
 
- Public Member Functions inherited from caffe::RecurrentLayer< Dtype >
 RecurrentLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
 
virtual void Reshape (const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
 
virtual void Reset ()
 
virtual int MinBottomBlobs () const
 
virtual int MaxBottomBlobs () const
 
virtual int ExactNumTopBlobs () const
 
virtual bool AllowForceBackward (const int bottom_index) const
 

Protected Member Functions

virtual void FillUnrolledNet (NetParameter *net_param) const
 Fills net_param with the recurrent network architecture. Subclasses should define this – see RNNLayer and LSTMLayer for examples.
 
virtual void RecurrentInputBlobNames (vector< string > *names) const
 Fills names with the names of the 0th timestep recurrent input Blob&s. Subclasses should define this – see RNNLayer and LSTMLayer for examples.
 
virtual void RecurrentOutputBlobNames (vector< string > *names) const
 Fills names with the names of the Tth timestep recurrent output Blob&s. Subclasses should define this – see RNNLayer and LSTMLayer for examples.
 
virtual void RecurrentInputShapes (vector< BlobShape > *shapes) const
 Fills shapes with the shapes of the recurrent input Blob&s. Subclasses should define this – see RNNLayer and LSTMLayer for examples.
 
virtual void OutputBlobNames (vector< string > *names) const
 Fills names with the names of the output blobs, concatenated across all timesteps. Should return a name for each top Blob. Subclasses should define this – see RNNLayer and LSTMLayer for examples.
 
- Protected Member Functions inherited from caffe::RecurrentLayer< Dtype >
virtual void Forward_cpu (const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
 
virtual void Forward_gpu (const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
 
virtual void Backward_cpu (const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
 

Additional Inherited Members

- Protected Attributes inherited from caffe::RecurrentLayer< Dtype >
shared_ptr< Net< Dtype > > unrolled_net_
 A Net to implement the Recurrent functionality.
 
int N_
 The number of independent streams to process simultaneously.
 
int T_
 The number of timesteps in the layer's input, and the number of timesteps over which to backpropagate through time.
 
bool static_input_
 Whether the layer has a "static" input copied across all timesteps.
 
int last_layer_index_
 The last layer to run in the network. (Any later layers are losses added to force the recurrent net to do backprop.)
 
bool expose_hidden_
 Whether the layer's hidden state at the first and last timesteps are layer inputs and outputs, respectively.
 
vector< Blob< Dtype > * > recur_input_blobs_
 
vector< Blob< Dtype > * > recur_output_blobs_
 
vector< Blob< Dtype > * > output_blobs_
 
Blob< Dtype > * x_input_blob_
 
Blob< Dtype > * x_static_input_blob_
 
Blob< Dtype > * cont_input_blob_
 

Detailed Description

template<typename Dtype>
class caffe::RNNLayer< Dtype >

Processes time-varying inputs using a simple recurrent neural network (RNN). Implemented as a network unrolling the RNN computation in time.

Given time-varying inputs $ x_t $, computes hidden state $ h_t := \tanh[ W_{hh} h_{t_1} + W_{xh} x_t + b_h ] $, and outputs $ o_t := \tanh[ W_{ho} h_t + b_o ] $.


The documentation for this class was generated from the following files: