我试图在Tensorflow 2.x中编写一个自定义损失函数,它鼓励在输出空间(2D矩阵)中逐渐增加梯度。所以,作为损失函数的一个组成部分,我想取一个张量并返回一个张量,其中每个单元代表原始张量中对应的相邻单元的平均值
例如,以左上角的单元格为例:6.3=(7+9+3)/3。或者以中间的单元格为例:4.5=(1+3+5+7+8+6+4+2)/8
考虑下面的代码:
def gradient_encouraging_loss(y_true: Tensor, y_pred: Tensor) -> Tensor:
gradient_loss: Tensor = tf.divide(tf.reduce_sum(tf.abs(tf.subtract(
y_pred, tensor_harmonic(y_pred)
))), tf.cast(tf.size(y_pred), tf.float32))
return gradient_loss
我将如何实现tensor_harmonic()
y_pred
的形状为(None, X, Y)
,其中X和Y是输出矩阵的维数
在大多数情况下,可以使用2D卷积运算来实现这一点,但需要特别注意外部值。以下是您如何做到这一点:
编辑:上面的代码可以进行调整,以处理批量矩阵,只需稍作修改:
相关问题 更多 >
编程相关推荐