1.回顾
上一篇博文(循环神经网络系列(一)Tensorflow中BasicRNNCell)中我们介绍了在Tensoflow中,每个RNN单元的实现,以及对应各个参数的含义。自那之后,我们就能通过Tensorflow实现一个单元的计算了。
import tensorflow as tf
import numpy as np
x = np.array([[1, 0, 1, 2], [2, 1, 1, 1]])
X = tf.placeholder(dtype=tf.float32, shape=[2, 4], name='input')
cell = tf.nn.rnn_cell.BasicRNNCell(num_units=5) # output_size:10,也可以换成GRUCell,LSTMAACell,BasicRNNCell
h0 = cell.zero_state(batch_size=2, dtype=tf.float32) # batch_size:2
output, h1 = cell.call(X, h0)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
a, b = (sess.run([output, h1], feed_dict={
X: x}))
print('output:')
print(a)
print('h1:')
print(b)
>>
output:
[[ 0.4495004 0.9573416 0.6013933 0.75571895 -0.8172958 ]
[ 0.6624889 0.7011481 0.68771356 0.77796507 -0.7617092 ]]
h1:
[[ 0.4495004 0.9573416 0.6013933 0.75571895 -0.8172958 ]
[ 0.6624889 0.7011481 0.68771356 0.77796507 -0.7617092 ]]
通过以上的代码,我们完成了如下操作:
但是通常情况下,我们都是要进行这样的操作:
输入 h 0 , x 1 h_0,x_1 h0,x