Tensorflow新手在这里!我知道Variables会随着时间的推移进行培训,占位符会使用不随模型训练而变化的输入数据(如输入图像和这些图像的类标签) .
我正在尝试使用Tensorflow实现RNN的前向传播,并想知道我应该保存RNN小区输出的类型 . 在numpy RNN实现中,它使用
hiddenStates = np.zeros((T, self.hidden_dim)) #T is the length of the sequence
然后它迭代地将输出保存在np.zeros数组中 .
在TF的情况下,我应该使用哪一个,tf.zeros或tf.placeholder?
在这种情况下,最佳做法是什么?我认为使用tf.zeros应该没问题但想要仔细检查 .
1 回答
首先,了解Tensorflow内部的所有内容都是Tensor非常重要 . 因此,当您执行某种计算时(例如像
outputs = rnn(...)
这样的rnn实现),此计算的输出将作为Tensor返回 . 所以你不需要将它存储在任何类型的结构中 . 您可以通过运行通信节点(即output
)(如session.run(output, feed_dict)
)来检索它 .告诉我,我认为您需要采用RNN的最终状态并将其作为后续计算的初始状态 . 两种方式:
A)如果您正在使用
RNNCell
实现在构建模型期间,您可以构建零状态,如下所示:B)如果您正在实施自己的员工将状态定义为零Tensor:
然后,在这两种情况下,你将有类似的东西:
在执行循环中,您可以先初始化状态,然后在
feed_dict
中将final_state
提供为initial_state
:你如何构建你的
feed_dict
取决于RNN的实现 .例如,对于
BasicLSTMCell
,状态是LSTMState
对象,您需要同时提供c
和h
: