【发布时间】:2018-03-18 15:56:21
【问题描述】:
我无法为 binary_crossentropy 添加惩罚。这个想法是在预定义的错误组的平均值超过某个阈值时惩罚损失函数。 下面是辅助函数,它采用表示组的掩码和已经计算的交叉熵。它只会返回违反某个阈值的次数,以惩罚调用它的实际损失函数。
def penalty(groups_mask, binary_crossentropy):
errors = binary_crossentropy
unique_groups = set(groups_mask)
groups_mask = np.array(groups_mask)
threshold = # whatever
c = 0
for group in unique_groups:
error_mean = K.mean(errors[(groups_mask == group).nonzero()], axis=-1)
if error_mean > threshold:
c += 1
return c
问题在于 error_mean 不是一个标量,我想不出一个简单的方法来将它与阈值进行比较。
【问题讨论】:
-
我实在看不懂你想在这行实现什么:
error_mean = K.mean(errors[(groups_mask == group).nonzero()], axis=-1)
标签: python deep-learning keras theano data-science