Tensorflow LSTM 报错

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pku_langzi/article/details/81232688

TensorFlow中张量的两种形状:一种是静态形状,另一种是动态形状。

静态维度是指当你在创建一个张量或者由操作推导出一个张量时,这个张量的维度是确定的。它是一个元祖或者列表。

注意:静态形状是非常有用的,特别是当你调试的时候,你可以使用 print 函数将张量形状进行打印,从而判断自己的设

计是否正确。

当你在运行你的图时,动态形状才是真正用到的。这种形状是一种描述原始张量在执行过程中的一种张量。

注意:当你要处理一些动态维度时,那么使用动态形状是非常方便的。

用tensorflow LSTM的时候,报如下错:

  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/rnn.py", line 684, in _dynamic_rnn_loop
    "Input size (depth of inputs) must be accessible via shape inference,"
ValueError: Input size (depth of inputs) must be accessible via shape inference, but saw value None.

输入进LSTM的tensor形状应该是[batch_size, time_step, input_dim],这个错应该是对于input_dim无法通过通过tensor的

形状来获得其大小,(depth of input应该指的是input_dim),TensorFlow去猜测不同张量的形状(在不同操作之间),

但是它不会总是能够做到这一点,即通过get_shape.as_list()得到None值。

参考文章:

Tensorflow RNN源码

Tensorflow: ValueError: Input size (depth of inputs) must be accessible via shape inference, but saw value None

Tensorflow中的dynamic shape、static shape及reshape、set_shape

TensorFlow学习系列(二):形状和动态维度

LSTM与GRU

猜你喜欢

转载自blog.csdn.net/pku_langzi/article/details/81232688
今日推荐