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

时间:2018-02-12 15:15:33

标签: python deep-learning keras

是否可以在自定义损失函数中使用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 :(得分:0)

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

相关问题