【问题标题】:how to write a custom loss function in keras?如何在 keras 中编写自定义损失函数?
【发布时间】:2021-09-21 22:19:09
【问题描述】:

这是我正在为其编写自定义损失函数的模型:

model = Sequential()
model.add(Conv2D(2,2,padding="same", activation="relu", input_shape=(8,8,1)))
model.add(Dropout(0.2))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dropout(0.2))
model.add(Dense(1, activation="sigmoid"))

model.compile(optimizer='Adam', loss=custom_loss1, metrics=['accuracy'])

这是我写的custom_loss1函数:

import keras.backend as kb

def custom_loss1(y_actual, y_predicted):
    value = kb.mean(kb.sum(kb.square((y_actual-y_predict)/10)))
    return value

但我收到此错误:

ValueError:没有为任何变量提供渐变:['conv2d_45/kernel:0', 'conv2d_45/bias:0', 'dense_45/kernel:0', 'dense_45/bias:0']。

怎么办?

【问题讨论】:

  • 请添加model.fit() 行。

标签: python keras loss-function


【解决方案1】:

如果没有实际运行代码本身,我不确定,但你是否在 tensorflow 中尝试过:

adj_diff = (y_actual - y_pred)/10
diff_squared = tf.math.square(adj_diff)
sum_diff = tf.math.add(diff_squared) ## or tf.math.reduce_sum depending on your dimensions
return tf.math.reduce_mean(sum_diff)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 2020-12-19
    • 2017-12-18
    • 2020-03-27
    • 1970-01-01
    • 2018-05-05
    相关资源
    最近更新 更多