Keras 中损失函数的导数

2023-12-14

我想在 keras 中创建以下损失函数:

Loss = mse + double_derivative(y_pred,x_train)

我无法合并衍生术语。我努力了K.gradients(K.gradients(y_pred,x_train),x_train)但这没有帮助。

我收到错误消息:

AttributeError:“NoneType”对象没有属性“op”

def _loss_tensor(y_true, y_pred,x_train):
    l1 = K.mean(K.square(y_true - y_pred), axis=-1)
    sigma = 0.01
    lamda = 3
    term = K.square(sigma)*K.gradients(K.gradients(y_pred,x_train),x_train)
    l2 = K.mean(lamda*K.square(term),axis=-1)
    return l1+l2

def loss_func(x_train):
        def loss(y_true,y_pred):
            return _loss_tensor(y_true,y_pred,x_train)
        return loss

def create_model_neural(learning_rate, num_layers,
                 num_nodes, activation):

    model_neural = Sequential()

    x_train = model_neural.add(Dense(num_nod, input_dim=num_input, activation=activation))

    for i in range(num_layers-1):
        model_neural.add(Dense(num_nodes,activation=activation,name=name))

    model_neural.add(Dense(1, activation=activation))

    optimizer = SGD(lr=learning_rate)
    model_loss = loss_func(x_train=x_train)

    model_neural.compile(loss=model_loss,optimizer=optimizer)

    return model_neural

问题是x_train总是None并且 keras 不能采用导数None。发生这种情况是因为model_neural.add(...)不返回任何内容。

我假设x_train是传递到网络的输入。在这种情况下x_train可能应该是另一个论点create_model_neural或者你可以尝试model_neural.input tensor.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Keras 中损失函数的导数 的相关文章

随机推荐