对我来说,我尝试了另一个例子让我理解切片功能
input = [
[[11, 12, 13], [14, 15, 16]],
[[21, 22, 23], [24, 25, 26]],
[[31, 32, 33], [34, 35, 36]],
[[41, 42, 43], [44, 45, 46]],
[[51, 52, 53], [54, 55, 56]],
]
s1 = tf.slice(input, [1, 0, 0], [1, 1, 3])
s2 = tf.slice(input, [2, 0, 0], [3, 1, 2])
s3 = tf.slice(input, [0, 0, 1], [4, 1, 1])
s4 = tf.slice(input, [0, 0, 1], [1, 0, 1])
s5 = tf.slice(input, [2, 0, 2], [-1, -1, -1]) # negative value means the function cutting tersors automatically
tf.global_variables_initializer()
with tf.Session() as s:
print s.run(s1)
print s.run(s2)
print s.run(s3)
print s.run(s4)
它输出:
[[[21 22 23]]]
[[[31 32]]
[[41 42]]
[[51 52]]]
[[[12]]
[[22]]
[[32]]
[[42]]]
[]
[[[33]
[36]]
[[43]
[46]]
[[53]
[56]]]
参数begin指示要开始切割的元素。 size参数表示要在该维度上包含多少个元素。
0
我正在尝试将输入层拆分为不同大小的部分。我正在尝试使用tf.slice来执行此操作,但是它不起作用。
一些示例代码:
输出:
这行得通,大致就是我想要发生的事情,但是我必须指定第一个尺寸(在这种情况下为
3
)。我不知道要输入多少个向量,这就是为什么我首先使用None
的placeholder
的原因!是否可以以某种方式使用
slice
,使其在尺寸直到运行时未知之前仍可以工作?我尝试过使用一个
placeholder
,该placeholder
从ph.get_shape()[0]
中获取其值,ph.get_shape()[0]
:x = tf.slice(ph, [0, 0], [num_input, 2])
。但这也不起作用。