Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Keras中创建依赖于历元数的损失函数参数?_Python_Tensorflow_Keras_Deep Learning_Loss Function - Fatal编程技术网

Python 如何在Keras中创建依赖于历元数的损失函数参数?

Python 如何在Keras中创建依赖于历元数的损失函数参数?,python,tensorflow,keras,deep-learning,loss-function,Python,Tensorflow,Keras,Deep Learning,Loss Function,我有一个自定义的丢失函数,带有一个超参数alpha,我想在训练期间每隔20个时期更改一次。损失函数类似于: def custom_loss(x, x_pred): loss1 = binary_crossentropy(x, x_pred) loss2 = (x, x_pred) return (alpha)* loss1 + (1-alpha)*loss2 根据我的研究,创建一个自定义回调是一个不错的选择。我已经研究了一个类似问题的解决方案,但是这些解决方案没有实现

我有一个自定义的丢失函数,带有一个超参数
alpha
,我想在训练期间每隔20个时期更改一次。损失函数类似于:

def custom_loss(x, x_pred): 
    loss1 = binary_crossentropy(x, x_pred)
    loss2 = (x, x_pred)
    return (alpha)* loss1 + (1-alpha)*loss2
根据我的研究,创建一个自定义回调是一个不错的选择。我已经研究了一个类似问题的解决方案,但是这些解决方案没有实现回调解决方案,这正是我想要实现的

我试图通过更改来自的
LearningRateScheduler
回调来创建自定义回调

但是,我不确定alpha值是否与损失函数中的alpha值对应。在任何情况下,当我将
changeapha
回调放在
model.fit
方法中时,我收到一个
属性错误


有人能帮我编辑回调,使它在一定的时间后改变我的
alpha
参数吗

我理解你的想法。我认为问题在于损失函数中的alpha不是指changeAlpha类的成员。您可以这样尝试:

instance = changeAlpha()
def custom_loss(x, x_pred): 
    loss1 = binary_crossentropy(x, x_pred)
    loss2 = (x, x_pred)
    return (instance.alpha*)* loss1 + (1-instance.alpha)*loss2
或者,您可以将alpha作为类变量而不是安装变量,然后按如下所示更改loss函数:

def custom_loss(x, x_pred): 
    loss1 = binary_crossentropy(x, x_pred)
    loss2 = (x, x_pred)
    return (changeAlpha.alpha*)* loss1 + (1-changeAlpha.alpha)*loss2

希望它能帮助您。

在我看来,这只有在启用了“急切执行”时才起作用,这会使它变得非常缓慢。
def custom_loss(x, x_pred): 
    loss1 = binary_crossentropy(x, x_pred)
    loss2 = (x, x_pred)
    return (changeAlpha.alpha*)* loss1 + (1-changeAlpha.alpha)*loss2