【问题标题】:Derivative in loss function in KerasKeras 损失函数的导数
【发布时间】:2018-10-21 15:08:44
【问题描述】:

我想在 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

【问题讨论】:

  • 你必须具体,“没有帮助”是相当模糊的。您是否收到错误消息?错误的价值观?在您的问题中包含任何错误消息。
  • @MatiasValdenegro 我收到以下错误“AttributeError: 'NoneType' object has no attribute 'op'”
  • 什么是dice?我想你的意思是loss
  • @rvinas 哦,是的。这是损失。谢谢。已编辑

标签: python machine-learning neural-network keras loss-function


【解决方案1】:

问题是x_train 总是None 并且keras 不能对None 进行衍生。这是因为model_neural.add(...) 没有返回任何东西。

我假设x_train 是传递给网络的输入。在这种情况下,x_train 可能应该是create_model_neural 的另一个参数,或者您可以尝试model_neural.input 张量。

【讨论】:

    猜你喜欢
    • 2018-10-10
    • 2019-04-11
    • 1970-01-01
    • 2018-04-03
    • 2019-01-20
    • 1970-01-01
    • 2021-05-23
    • 2020-12-19
    • 2016-03-11
    相关资源
    最近更新 更多