从TensorFlow张量中获取行



我试图在TensorFlow中定义一个自定义层,但我在数据处理方面遇到了困难。据我所知,最常见的方法是计算一批输入的输出。这意味着,如果输入张量被称为input,则input[n]是该批的第n个训练输入。

现在让我们假设每个例子由两个向量ab组成,它们将被不同地对待。例如,如果一个训练示例是[[1,2,3],[4,5,6]]a=[1,2,3]b=[4,5,6]

然而,输入由许多这样的例子组成,因此它可以是例如

[
[[1, 2, 3], [4, 5, 6]],
[[10, 27, 3],[4, 45, 61]]
]

有没有一种方法可以选择特定的";行">

你可以用input[n]选择一个例子,但我想得到一个张量,它是所有向量a或所有向量b的列表。如果要选择向量a,则上面示例的结果将是[[1,2,3],[10,27,13]]

是否有一种方法可以定义单个训练示例的操作,并使TensorFlow以有效的方式在批次的所有示例上执行它?

我想您可能正在寻找一个lambda层:

import tensorflow as tf
tensor = [[[1, 2, 3], [4, 5, 6]], [[10, 27, 3],[4, 45, 61]]]
ds = tf.data.Dataset.from_tensor_slices(tensor) 
times_2_times_3 = lambda x: (tf.multiply(x[0], 2), tf.multiply(x[1], 3))
layer = tf.keras.layers.Lambda(times_2_times_3)
layer(next(iter(ds)))
(<tf.Tensor: shape=(3,), dtype=int32, numpy=array([2, 4, 6])>,
<tf.Tensor: shape=(3,), dtype=int32, numpy=array([12, 15, 18])>)

我刚刚解决了这个问题。我正在寻找切片运算符。给定输入

x=[[[1, 2, 3], [4, 5, 6]],
[[10, 27, 3],[4, 45, 61]]]

你可以通过运行得到十个[[1,2,3],[10,27,13]]result=x[:,0]这意味着从第0维度("批量维度"(选择所有元素并且从第1维度选择第一个元素。恐怕lambda层解决方案仅适用于单个训练示例。

相关内容

  • 没有找到相关文章

最新更新