我在 TensorFlow 中有一个 2D 张量,我只想选择其中的 1D。我该怎么做?
最佳答案
您可以使用slice 。这是一个例子:
import tensorflow as tf
initial = tf.truncated_normal([2,3], mean=100.0, stddev = 10.0)
slice1 = tf.slice(initial, [0,0], [1,-1])
slice2 = tf.slice(initial, [0,0], [-1, 1])
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
x,y,z = sess.run([initial, slice1, slice2])
print "original"
print x
print "slice1"
print y
print "slice2"
print z
输出如下:
original
[[ 94.17047119 90.71355438 90.06797791]
[ 99.81169891 99.91291809 106.17702484]]
slice1
[[ 94.17047119 90.71355438 90.06797791]]
slice2
[[ 94.17047119]
[ 99.81169891]]
在此示例中,slice
接受三个参数。按顺序排列,它们是:
input
:N
维的张量[d1, ..., dN]
保存您想要的数据切片自.在我们的例子中,它是一个[heigth, width]
的 2D 张量。begin
:长度为N
的列表,指定幻灯片的起始位置。您可以直观地将其视为访问器索引,就像您在 numpy 中所做的那样。因此,它表示张量的标量元素。在我们的例子中,[0,0]
将指向最“上、左”位置的数字。size
:也是一个长度为N
的列表,指定输出张量的大小,从begin
开始并取每个维度对应的元素数量。在我们的示例中,它可以包含[0,0]
和[heigth,width]
之间的任何数字,但如果它包含任何零,则会导致切片返回空张量。此外,您不能超出输入张量的实际大小(例如,如果您有 3 个元素并且从第二个元素开始,则只能有 1 或 2 个元素,但不能有 3 个)。
另请注意,begin
和 size
大小均在构建图表时解析。在这两种情况下,您都可以使用 -1
相当于该维度的最大大小(通常在 python 中)。
关于tensorflow - 如何在 TensorFlow 中仅选择(投影)张量的一维?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44102280/