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值。
参考文章: