python – 以y_true依赖于y_pred的方式自定义Keras的丢失函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 以y_true依赖于y_pred的方式自定义Keras的丢失函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1317字,纯文字阅读大概需要2分钟。
内容图文
我正在研究多标签分类器.我有很多输出标签[1,0,0,1 …],其中1表示输入属于该标签,0表示否则.
在我的情况下,我使用的损失函数基于MSE.我想以一种方式改变损失函数,当输出标签为-1时,它将改变为该标签的预测概率.
检查附加的图像,以便最好地理解我的意思:
场景是 – 当输出标签为-1时,我希望MSE等于零:
这是场景:
在这种情况下,我希望它改为:
在这种情况下,第二个标签的MSE(中间输出)将为零(这是我不希望分类器了解此标签的特殊情况).
感觉这是一个必要的方法,我真的不相信我是第一个考虑它的人,所以首先我想知道是否有这样的训练神经网络的名称,其次我想知道如何我可以做吗.
我知道我需要更改损失函数中的一些东西,但我真的是Theano的新手,并且不确定如何查找特定值以及如何更改张量的内容.
解决方法:
我相信这就是你要找的.
import theano
from keras import backend as K
from keras.layers import Dense
from keras.models import Sequential
def customized_loss(y_true, y_pred):
loss = K.switch(K.equal(y_true, -1), 0, K.square(y_true-y_pred))
return K.sum(loss)
if __name__ == '__main__':
model = Sequential([ Dense(3, input_shape=(4,)) ])
model.compile(loss=customized_loss, optimizer='sgd')
import numpy as np
x = np.random.random((1, 4))
y = np.array([[1,-1,0]])
output = model.predict(x)
print output
# [[ 0.47242549 -0.45106074 0.13912249]]
print model.evaluate(x, y) # keras's loss
# 0.297689884901
print (output[0, 0]-1)**2 + 0 +(output[0, 2]-0)**2 # double-check
# 0.297689929093
内容总结
以上是互联网集市为您收集整理的python – 以y_true依赖于y_pred的方式自定义Keras的丢失函数全部内容,希望文章能够帮你解决python – 以y_true依赖于y_pred的方式自定义Keras的丢失函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。