刚接触 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。为什么 tensorflow 会以不同的方式看待它们?
最佳答案
出于形状验证目的,Tensorflow 会以不同的方式考虑它。 例如,使用第二个版本无法进行大小为 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])
因为所有代码都已经考虑了这个额外的维度。
关于python - TensorFlow 占位符维度 - 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42490755/