是否可以在自定义损失函数中使用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 回答
问题有点模糊,所以它既有回答,也有回应 .
根据您的实施,您可以尝试
model = keras.layers.Add(..something..)(x)
其中x =先前相关值的名称 .