gpt4 book ai didi

python - 如何按元素应用二元交叉熵,然后在 Keras 中对所有这些损失求和?

转载 作者:太空宇宙 更新时间:2023-11-03 21:45:13 24 4
gpt4 key购买 nike

我想编写一个带有两个参数的函数,AB ,相同形状的张量(例如 13x13 或其他形状),并且返回一个数字,该数字表示按组件应用二进制交叉熵时所有损失的总和。所以,对于A[i, j]B[i, j]我们找到二元交叉熵损失,然后对所有i求和和j 。如何在 Keras 和 Tensorflow 中实现它?

最佳答案

this answer中建议的解决方案实际上可能不是您(读者)正在寻找的内容。

如果ABNxM ,其中M > 1 ,然后binary_crossentropy(A, B)不会按元素计算二进制交叉熵,但 binary_crossentropy(A, B)返回形状为 Nx1 的数组,其中binary_crossentropy(A, B)[i]对应于 A[i] 之间的平均二元交叉熵和B[i] (即,它计算 A[i][j]B[i][j] 之间的二进制交叉熵,对于所有 j ,然后计算 M 二进制交叉熵的平均值)。

如果要计算元素A(i, j)之间的二元交叉熵和B(i, j) ,对于所有人ij ,那么你可能首先要 reshape AB ,使它们具有形状 (N*M)x1 .

import numpy as np
import tensorflow as tf

a = np.random.rand(4, 2).reshape((-1, 1))
b = np.random.rand(4, 2).reshape((-1, 1))
print("ce between a[i, j] and b[i, j]) =", tf.losses.binary_crossentropy(a, b))
print("average cross-entropy =", np.mean(tf.losses.binary_crossentropy(a, b)))

但是,如果你想计算 A 之间的二元交叉熵和B逐元素并取所有二元交叉熵的平均值,那么您不需要 reshape AB 。所以,如果ABNxM数组,然后 binary_crossentropy(A, B)产生 Nx1数组,其中每个元素对应于行 i 之间的平均二进制交叉熵的A和行iB (对于 i=1, ..., N )。最后,为了取所有二元交叉熵的平均值,我们还需要取 binary_crossentropy(A, B) 的平均值。 ,即tf.reduce_mean(binary_crossentropy(A, B)) .

关于python - 如何按元素应用二元交叉熵,然后在 Keras 中对所有这些损失求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52552910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com