是否可以在自定义损失函数中使用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后端函数?
有任何解决方案或解决方法吗?
答案 0 :(得分:0)
这个问题有点含糊,所以它既有回答,也有回应
根据您的实施情况,您可以尝试使用
model = keras.layers.Add(..something..)(x)
其中x =先前相关值的名称。