我正试图将输入层分成不同大小的部分。我试着用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
)。我不知道我要输入多少向量,这就是为什么我首先使用带None
的placeholder
!
使用slice
的方式是否可以使它在维度未知时工作,直到运行时?
我试过使用从ph.get_shape()[0]
获取其值的placeholder
,就像这样:x = tf.slice(ph, [0, 0], [num_input, 2])
。但那也没用。
对我来说,我尝试了另一个例子来理解slice函数
它输出:
参数begin指示要开始剪切的元素。 size参数表示需要在该维度上有多少元素。
可以在
tf.slice
的size
参数中指定一个负维度。负维数告诉Tensorflow根据其他维数动态地确定正确的值。你也可以试试这个
x = tf.slice(ph, [0,0], [3, 2])
因为起点是
(0,0)
,第二个参数是[0,0]
。 你想分割三个原始列和两个列,所以你的第三个参数是[3,2]
。这将为您提供所需的输出。
相关问题 更多 >
编程相关推荐