Python TensorFlow占位符维度-什么';有什么区别?

Python TensorFlow占位符维度-什么';有什么区别?,python,machine-learning,tensorflow,Python,Machine Learning,Tensorflow,TensorFlow是新手,但我被这个占位符声明问题困住了。将占位符x定义为: x = tf.placeholder(tf.float32, [None, seq_size]) 与此相反? x = tf.placeholder(tf.float32, [None, seq_size, 1]) 我是用矩阵来思考的。假设变量x有10个值,seq_size为3,第一个值为10x3,第二个值为10x3x1。为什么TysFooad会以不同的方式考虑它们呢?> PrasFLUE将对形状验证目的考虑不同。

TensorFlow是新手,但我被这个占位符声明问题困住了。将占位符x定义为:

x = tf.placeholder(tf.float32, [None, seq_size])
与此相反?

x = tf.placeholder(tf.float32, [None, seq_size, 1])

我是用矩阵来思考的。假设变量x有10个值,seq_size为3,第一个值为10x3,第二个值为10x3x1。为什么TysFooad会以不同的方式考虑它们呢?

> PrasFLUE将对形状验证目的考虑不同。 例如,第二个版本不可能使用大小为3x4的矩阵进行矩阵乘法,因为尺寸1和3不匹配。Tensorflow将能够在图形构造时检测到这一点

另外,在代码可读性方面,如果这个维度将来可能会更改,那么对一般理解来说,使用额外的维度1可能会更好。例如,如果数据点是单变量时间序列,则使用

x = tf.placeholder(tf.float32, [None, seq_size, 1])
将更容易将结果扩展到维度
d>1的多变量时间序列

x = tf.placeholder(tf.float32, [None, seq_size, d])
因为所有的代码都已经考虑了这个额外的维度

x = tf.placeholder(tf.float32, [None, seq_size, 1])
这里的“x”是一个占位符,用来容纳大小为[任何东西,大小为1]的张量。这适用于矩阵运算,其中一些多维运算可以通过向上封装到更高维矩阵来轻松执行

注意:形状[None,seq_size]和[None,seq_size,1]的数组中的元素数量可以相同。它们可以很容易地相互重塑