gpt4 book ai didi

python - 用于预测数字输出的自定义损失函数

转载 作者:行者123 更新时间:2023-12-01 08:36:00 27 4
gpt4 key购买 nike

我希望我的 keras 网络能够预测 60..200 范围内的数字输出。根据我的经验,在这种情况下,仅输出 sigmoid*140+60 或类似的效果非常差,将其转换为类可能会更好。

但是,我正在努力定义损失函数。显然,预测附近的类别更好,并且应该受到更少的惩罚。

下面的示例代码。网络显然会更加复杂,并且可能部分是卷积的,但这只是开始。

当前代码给出错误:“IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (`None')整数或 bool 数组是有效的索引”。我想这是有道理的,因为反向传播限制了可以做的事情,但我不确定如何正确设计和调试损失函数。

classes = np.array(range(60,200,5))
nc = classes.shape[0]
def myloss(y_true, y_pred):
pred_class = K.argmax(y_pred,axis=1)
return K.sqrt( K.sum( K.square( classes[pred_class] - y_true ) ) )

in1 = Input(shape=(77,))
mid = Dense(50, activation='tanh')( in1 )
out = Dense(nc, activation='softmax')( mid )
model = Model(inputs=in1, outputs=out)
model.add_loss( myloss(sbp, out) )

最佳答案

您描述的问题是序数回归问题。关于机器学习中序数回归的损失函数有多篇论文。正如你所说,这个想法是对较大的偏差进行更多的惩罚,而通常用于分类的交叉熵损失则不是这种情况。你可以看看这个github repo(我自己没有使用它的经验):https://github.com/JHart96/keras_ordinal_categorical_crossentropy

关于python - 用于预测数字输出的自定义损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53719230/

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