tensorflow - 如何在 TensorFlow 中仅选择(投影)张量的一维?

标签 tensorflow

我在 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 个)。

另请注意,beginsize 大小均在构建图表时解析。在这两种情况下,您都可以使用 -1 相当于该维度的最大大小(通常在 python 中)。

关于tensorflow - 如何在 TensorFlow 中仅选择(投影)张量的一维?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44102280/

相关文章:

machine-learning - 如何将(相同大小、分类的)图像转换为 TensorFlow 的数据集

python - 当我尝试转换 Keras MLP 时,为什么 Google Colab 会给出 "unknown device"错误?

python - 再次调用 model.fit 方法是否会重新初始化已经训练好的权重?

python - 如何在谷歌colab中安装keras_contrib?

tensorflow - 了解 TensorBoard(权重)直方图

python - "UserWarning: Possibly corrupt EXIF data"对图像进行分类时

python - 自定义丢失问题 : inputs to eager execution function cannot be keras symbolic tensors but found

python - 类型错误 : An op outside of the function building code is being passed a Graph tensor

python-3.x - 适用于 Keras 2.3 的 Tensorflow 包

python - Keras神经网络输出函数参数/如何构造损失函数?