我们得到了一个3D的
其中, -
条件:不能使用
input_tensor
,它是一个表示(batch_size, N, 2)
的张量。其中, -
batch_size = 总批次数
- N = 总预测数
- 2 = (标签,分数)
我想要在每个批次中,将标签相同的分数值(第二列元素)相加。例如,给定这样一个张量,有3个批次,每个批次有4个预测和2个元素;我想要得到required_output_tensor
作为结果。条件:不能使用
for循环
或tf.map_fn()
,原因是tf.map_fn()在TF2.X上GPU上运行速度较慢。您可以查看我的示例代码,该代码适用于2D张量,并且我可以在tf.map_fn()中使用相同的代码。
input_tensor = tf.constant([
[
[2., 0.7],
[1., 0.1],
[3., 0.4],
[2., 0.8],
],
[
[2., 0.7],
[1., 0.1],
[1., 0.4],
[4., 0.8],
],
[
[3., 0.7],
[1., 0.1],
[3., 0.4],
[4., 0.8],
]
])
required_output_tensor = [
[
[2., 1.5],
[1., 0.1],
[3., 0.4],
],
[
[2., 0.7],
[1., 0.5],
[4., 0.8],
],
[
[3., 1.1],
[1., 0.1],
[4., 0.8],
]
]
编辑:我可以看出我们最终会得到不规则张量。在这种情况下,我认为可以选择每个批次的前k个元素,其中k=min(size(smallest_batch)),或者可以硬编码为topk=2。
编辑2:添加额外的输入以尝试提出的解决方案:
additional_input_tensor = tf.constant([
[
[2., 0.5],
[1., 0.1],
[3., 0.4],
[2., 0.5],
],
[
[22., 0.7],
[11., 0.2],
[11., 0.3],
[44., 0.8],
],
[
[3333., 0.7],
[1111., 0.1],
[4444., 0.4],
[5555., 0.8],
],
[
[2., 0.9],
[1., 0.2],
[5., 0.3],
[2., 0.9],
]
])
topk
个元素。我已经在原始问题中添加了澄清注释。谢谢! - Snehaltotal_classes=50
。 - Snehal