使用theano函数在喀拉拉邦自定义损失函数

内拉

我想使用自己的binary_crossentropy,而不是使用Keras库随附的库。这是我的自定义函数:

    import theano
    from keras import backend as K

    def elementwise_multiply(a, b): # a and b are tensors
       c = a * b
       return theano.function([a, b], c)

    def custom_objective(y_true, y_pred):  
       first_log = K.log(y_pred)
       first_log = elementwise_multiply(first_log, y_true)
       second_log = K.log(1 - y_pred)
       second_log = elementwise_multiply(second_log, (1 - y_true))
       result = second_log + first_log
       return K.mean(result, axis=-1)

注意:这是为了练习。我知道T.nnet.binary_crossentropy(y_pred,y_true)

但是,当我编译模型时:

sgd = SGD(lr=0.001)
model.compile(loss = custom_objective, optimizer = sgd)

我收到此错误:

-------------------------------------------------- -------------------------()中的TypeError追溯(最近一次通话最近)36 37 sgd = SGD(lr = 0.001)---> 38 model.compile(损失= custom_objective,优化程序= sgd)39#==================================== ===========

C:\ Program Files(x86)\ Anaconda3 \ lib \ site-packages \ keras \ models.py在compile中(self,Optimizer,loss,class_mode)418 else:419 mask = None-> 420 train_loss = weighted_loss(self。 y,self.y_train,self.weights,mask)421 test_loss = weighted_loss(self.y,self.y_test,self.weights,mask)422

C:\ Program Files(x86)\ Anaconda3 \ lib \ site-packages \ keras \ models.py in weighted(y_true,y_pred,weights,mask)80'''81#score_array的ndim> = 2 ---> 82 score_array = fn(y_true,y_pred)83如果mask不是None:84#mask应该具有与score_array相同的形状

在custom_objective(y_true,y_pred)中11 second_log = K.log(1-K.clip(y_true,K.epsilon(),np.inf))12 second_log = elementwise_multiply(second_log,(1-y_true))---> 13结果= second_log + first_log 14#结果= np.multiply(结果,y_pred)15返回K.mean(结果,轴= -1)

TypeError:+不支持的操作数类型:“函数”和“函数”

当我用内联函数替换elementwise_multiply时:

def custom_objective(y_true, y_pred):  
    first_log = K.log(y_pred)    
    first_log = first_log * y_true
    second_log = K.log(1 - y_pred)
    second_log = second_log * (1-y_true)
    result = second_log + first_log
    return K.mean(result, axis=-1)

该模型可以编译,但损失值为nan

时代1/1 945/945 [==============================-62秒-损失:南-比赛:0.0011- val_loss:nan-val_acc:0.0000e + 00

有人可以帮我吗?

谢谢

内拉

我发现了问题。我必须将返回值乘以“ -1”,因为我使用随机梯度递归(sgd)作为优化器,而不是随机梯度上升!

这是代码,它像一个魅力一样工作:

import theano
from keras import backend as K

def custom_objective(y_true, y_pred):  
    first_log = K.log(y_pred)    
    first_log = first_log * y_true
    second_log = K.log(1 - y_pred)
    second_log = second_log * (1 - y_true)
    result = second_log + first_log
    return (-1 * K.mean(result)) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

喀拉拉邦在每个时代都遭受同样的损失

来自分类Dev

喀拉拉邦拟合的输出是否显示平均损失?

来自分类Dev

喀拉拉邦的损失百分比吗?

来自分类Dev

Keras:无法在模型中使用自定义损失函数

来自分类Dev

喀拉拉邦错误-未定义名称“密集”

来自分类Dev

喀拉拉邦错误-未定义名称“密集”

来自分类Dev

在喀拉拉邦,模型损失值是否适合批次或样本的平均值?

来自分类Dev

火炬的交叉熵损失与喀拉拉邦的“ categorical_crossentropy”不同吗?

来自分类Dev

如何在Tensorflow中编写自定义损失函数?

来自分类Dev

Keras,Python中的自定义损失函数?

来自分类Dev

Keras模型-在自定义损失函数中获取输入

来自分类Dev

在CNN的Keras自定义损失函数中处理数据

来自分类Dev

自定义损失函数,Keras \\ ValueError:无渐变

来自分类Dev

基于输入数据的Keras中的自定义损失函数

来自分类Dev

在自定义损失函数中迭代张量

来自分类Dev

张量流中的自定义损失函数

来自分类Dev

使用自定义损失函数运行程序时Python崩溃

来自分类Dev

张量的矢量化运算,而不是在keras自定义损失函数中使用for循环

来自分类Dev

在Keras / Tensorflow自定义损失函数中使用其他**可**变量

来自分类Dev

Keras中的自定义损失函数,使用掩码数组作为输入

来自分类Dev

如何使用过滤自定义张量流损失函数?

来自分类Dev

如何在Keras自定义损失函数中使用张量?

来自分类Dev

自定义损失函数以在Python中使用Keras进行奖励

来自分类Dev

使用Tensorflow / Keras求解微分方程的自定义损失函数的问题

来自分类Dev

如何使用自定义损失函数处理批量大小错误?

来自分类Dev

使用 Keras 自定义损失函数来惩罚更多的负面预测

来自分类Dev

使用自定义损失函数创建Keras模型的函数只能使用一次

来自分类Dev

keras 中的加权 mse 自定义损失函数 - 自定义权重

来自分类Dev

喀拉拉邦密集层的结果

Related 相关文章

  1. 1

    喀拉拉邦在每个时代都遭受同样的损失

  2. 2

    喀拉拉邦拟合的输出是否显示平均损失?

  3. 3

    喀拉拉邦的损失百分比吗?

  4. 4

    Keras:无法在模型中使用自定义损失函数

  5. 5

    喀拉拉邦错误-未定义名称“密集”

  6. 6

    喀拉拉邦错误-未定义名称“密集”

  7. 7

    在喀拉拉邦,模型损失值是否适合批次或样本的平均值?

  8. 8

    火炬的交叉熵损失与喀拉拉邦的“ categorical_crossentropy”不同吗?

  9. 9

    如何在Tensorflow中编写自定义损失函数?

  10. 10

    Keras,Python中的自定义损失函数?

  11. 11

    Keras模型-在自定义损失函数中获取输入

  12. 12

    在CNN的Keras自定义损失函数中处理数据

  13. 13

    自定义损失函数,Keras \\ ValueError:无渐变

  14. 14

    基于输入数据的Keras中的自定义损失函数

  15. 15

    在自定义损失函数中迭代张量

  16. 16

    张量流中的自定义损失函数

  17. 17

    使用自定义损失函数运行程序时Python崩溃

  18. 18

    张量的矢量化运算,而不是在keras自定义损失函数中使用for循环

  19. 19

    在Keras / Tensorflow自定义损失函数中使用其他**可**变量

  20. 20

    Keras中的自定义损失函数,使用掩码数组作为输入

  21. 21

    如何使用过滤自定义张量流损失函数?

  22. 22

    如何在Keras自定义损失函数中使用张量?

  23. 23

    自定义损失函数以在Python中使用Keras进行奖励

  24. 24

    使用Tensorflow / Keras求解微分方程的自定义损失函数的问题

  25. 25

    如何使用自定义损失函数处理批量大小错误?

  26. 26

    使用 Keras 自定义损失函数来惩罚更多的负面预测

  27. 27

    使用自定义损失函数创建Keras模型的函数只能使用一次

  28. 28

    keras 中的加权 mse 自定义损失函数 - 自定义权重

  29. 29

    喀拉拉邦密集层的结果

热门标签

归档