我有一个自定义损失函数(在keras中),它接收两个批次作为输入,因此它们的形状(对于两者都是相同的)通常是(batch_size 128, 128, 3)作为图像。现在,我想执行两个操作,它们具有以下形状:
- (batch_size, 128, 128)
- (batch_size)
现在,我想做的是对这两个张量求和,但显然我做不到,所以想法很简单:展开第二个张量使其具有与第一个张量相同的形状,复制其他空位上的单个值。
考虑到它是一个损失函数,我怎么能做到呢?
注意:我已经尝试过减少第一个张量并将其与第二个张量之和作为标量,但这个解决方案不像我想的那样起作用。
如果您希望多次广播相同的值,这已经得到支持。你只需要确保你的尺寸对齐广播。
import tensorflow as tf
a = tf.constant([[[1,2],[2,3]],[[3,4],[4,5]],[[5,6],[6,7]]])
b = tf.constant([1,2,3])
print(a + b[:,None,None])