Hi, There is a verbose tutorial on LSTM here , http://deeplearning.net/tutorial/lstm.html . And code is here, http://deeplearning.net/tutorial/code/lstm.py . Please refer to them
Cheers, Ramana On Tuesday, June 20, 2017 at 1:52:19 AM UTC+5:30, Sunjeet Jena wrote: > > *So this is my code for creating the RNN with LSTM:* > > class RNN(object): > > def __init__(self, INPUT,input_units, output_units): > > self.input=INPUT #Input > parameters/features > self.input_layer_units= input_units > #Number of Input units > self.output_layer_units=output_units > #Number of Output Units > > > > W_XH=(np.array(np.random.rand(self.input_layer_units,self.output_layer_units), > > dtype=theano.config.floatX)) #Weights for > Connection from Previous Layer to Current Layer > > self.W_XH=shared(value=W_XH,name='Weight of Previous Hidden Layer > to Current Hidden in RNN',borrow=True) > > B_XH=(np.array(np.zeros(self.output_layer_units), > dtype=theano.config.floatX)) > > self.B_XH=shared(value=B_XH,name='Bias of Previous Hidden Layer to > Current Hidden in RNN', borrow=True) > #Initializing the Bias > Units > > W_HH= (np.array(np.random.rand(self.output_layer_units, > self.output_layer_units), dtype=theano.config.floatX)) > > self.W_HH=shared(value=W_HH,name='Weight of Previous Time Frame of > the Hidden Layer to Current Time frame hidden layer in RNN',borrow=True) > > #Weights for Connectiof=n through current time unit and > previous time unit > > B_HH=(np.array(np.zeros(self.output_layer_units), > dtype=theano.config.floatX)) > > self.B_HH=shared(value=B_HH,name='Bias of Previous Time Frame of > the Hidden Layer to Current Time frame hidden layer in RNN', > borrow=True) > #Initializing the Bias Units > > hidden_layers_output=(np.array(np.zeros(self.output_layer_units,), > dtype=theano.config.floatX)) > > self.hidden_layers_output=shared(value=hidden_layers_output, > name='hidden_layers_output', borrow=True) > > c_t_1=0.0 > > self.c_t_1=shared(value=c_t_1, name='c_t_1', borrow=True) > > self.z= (tensor.dot(self.input, self.W_XH) + > tensor.dot(self.hidden_layers_output, self.W_HH) + self.B_XH + > self.B_HH) #Output of Hidden Layers Before Going Through LSTM > > """ Passing Through LSTM Cell """ > > self.I=tensor.nnet.sigmoid(self.z) > self.F=tensor.nnet.sigmoid(self.z) > self.O=tensor.nnet.sigmoid(self.z) > self.G=tensor.tanh(self.z) > > self.c_t= (self.F*self.c_t_1) + (self.I*self.G) > #Cell output > self.h_t= self.O*(tensor.tanh(self.c_t)) > #Output of Hidden Layer after passing through LSTM > > self.output=self.h_t > > > self.parameters=tensor.concatenate([self.W_XH.flatten(1),self.B_XH.flatten(1),self.W_HH.flatten(1),self.B_HH.flatten(1)]) > > > > self.c_t_1= self.c_t > > self.hidden_layers_output=self.h_t > > *After creating the class I am calling the Class for 'N' times (where 'N' > is the number of Hidden Layers) and storing then parameters in another > class and later on taking the gradient of the cost w.r.t. parameters with > the option disconnected_inputs='warn'. Is this the right implementation ? > Please help.* > -- --- You received this message because you are subscribed to the Google Groups "theano-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
