2017-02-20 29 views
0

我是tensorflow的新手。我在练习编码tutorial code。大部分代码对我来说都有意义,但在某些时候我陷入了困境。tensorflow允许我指定可变长度维的方式似乎不一致

import tensorflow as tf 
x = tf.placeholder("float", [None, n_steps, n_input]) 
x = tf.transpose(x, [1, 0, 2]) 
x = tf.reshape(x, [-1, n_input]) 

随着tf.placholder功能我不得不与None指定可变长度dimesion。但与tf.reshape我不得不使用-1,而不是None。在这两个函数的文档中,两个相关参数的名称都是shape。所以我觉得在这里迷路了。他们真的有不同的含义吗?还是仅仅是tensorflow开发者的一个小设计错误?

回答

2

你可以这样理解它:在一个占位符中,值“None”表示:“可以是任何值”。就像你的情况一样:你的批量大小可以是任何东西。 在一个重塑函数中,-1表示“无论什么值都可以使这个形状起作用”。在你的情况下,你的x得到了形状(batch * n_steps),因为这是形状x需要适合矩阵中的相同数据。有趣的是:你可以在一个占位符中使用多个None值(表示任何批量大小,图像的任何宽度和高度)......但是你不能在重塑函数中使用多个-1值!

+0

特别是['-1']的形状变成了一维... –

相关问题