RNN:Recurrent Neural Network

循环神经网络公式:

该公式来源于Pytorch截图,

其相关设置如下https://pytorch.org/docs/stable/generated/torch.nn.RNN.html#rnn

Tensorflow2中目前未看到明确公式, 

​​​​​​​其相关设置如下icon-default.png?t=MBR7https://pytorch.org/docs/stable/generated/torch.nn.RNN.html#rnn​​​​​​​

根据公式和后续代码,基本得出以下结论:

(1)假设此时刻是中间某个时刻t,正在计算h_t,计算时接收两个输入,分别是当前时刻对应的输入x_t,上一时刻计算得到的隐藏状态h_t-1。

(2)假设此时刻是初始时刻,正在计算h_1,计算时同样接收两个输入,分别是当前时刻对应的网络输入x_0,初始时刻的隐藏状态,需要注意的是按照torch.nn.RNN源码中的计算方式,如果初始h0不存在也即为None,则网络将自动生成一个尺度为(n_layers * n_directions,max_batch_size, hidden_size)的3维零矩阵初始隐藏状态。其源码如下:

RNN:Recurrent Neural Network_第1张图片

(3)假如此时刻是中间某个时刻,并且此RNN是多层RNN,计算过程将是层层递进的,计算中间层时,也需要输入一个x_hat,只是这时候的x_hat是上层计算的output,因此每一层都会出现一个h_hat_i,直到最后一层产生一个y_t的时候,暂且算作同时计算得到了一个h_t。

(4)无论是中间层计算还是时刻t计算他们在pytorch中都遵循上面的公式

(5)pytorch计算的具体实现通过Github项目aTen作为底层实现的

另外,透过cs224n课程提供的课件:A Primer on Neural Network Models for Natural Language Processinghttp://u.cs.biu.ac.il/~yogo/nnlp.pdf

 中的Page52-Figure10:

RNN:Recurrent Neural Network_第2张图片

可以对RNN结构得到一个比较清晰的认识。


完善中......

你可能感兴趣的:(#,Basic,Networks,rnn)