我试图将我的输入层分成不同大小的部分。我正在尝试使用 tf.slice 来执行此操作,但它不起作用。
一些示例代码:
import tensorflow as tf
import numpy as np
ph = tf.placeholder(shape=[None,3], dtype=tf.int32)
x = tf.slice(ph, [0, 0], [3, 2])
input_ = np.array([[1,2,3],
[3,4,5],
[5,6,7]])
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
print sess.run(x, feed_dict={ph: input_})
输出:
[[1 2]
[3 4]
[5 6]]
这有效并且大致是我想要发生的事情,但我必须指定第一个维度( 3
在这种情况下)。我不知道我要输入多少向量,这就是为什么我首先使用 placeholder
和 None
的原因!
是否可以使用 slice
以便在运行时之前维度未知时它可以工作?
我试过使用 placeholder
它的值来自 ph.get_shape()[0]
就像这样: x = tf.slice(ph, [0, 0], [num_input, 2])
。但这也没有用。
原文由 Nimitz14 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以在 --- 的
tf.slice
size
参数中指定一个负维度。负维度告诉 Tensorflow 根据其他维度的决定动态确定正确的值。