首页 文章

在自定义丢失功能中使用Keras层

提问于
浏览
1

是否可以在自定义损失函数中使用Keras图层(预训练或固定图层,没有可训练参数)?

我想做的事情如下:

def custom_loss(y_true, y_pred):
    y_true_trans = SomeKerasLayer()(y_true)
    y_true_trans = SomeKerasLayer()(y_pred)
    return K.mean(K.abs(y_pred_trans - y_true_trans), axis=-1)

在Tensorflow后端,我收到错误:

文件“/home/drb/venvs/keras/lib/python3.5/site-packages/tensorflow/python /framework/tensor_util.py”,第364行,在make_tensor_proto中引发ValueError(“不支持值 . ”)ValueError :不支持任何值 .

当然我可以使用损失函数之外的Keras层转换 y_pred (通过提供额外的输出),但我不能对参考值 y_true 做同样的事情 .

用更一般的术语重新定义同一个问题的另一种方法是:是否可以将Keras层封装为Keras后端函数?

有没有解决方案或解决方法?

1 回答

  • 0

    问题有点模糊,所以它既有回答,也有回应 .
    根据您的实施,您可以尝试
    model = keras.layers.Add(..something..)(x)
    其中x =先前相关值的名称 .

相关问题