【发布时间】:2020-07-28 06:04:39
【问题描述】:
我正在尝试为我用 Keras 编写的模型编写逐像素加权损失函数,但在 TensorFlow 2.0 中似乎不再可能,即不可能有除 @ 之外的其他输入的损失函数987654321@和y_pred
我以前是这样写的:
from tensorflow.keras.layers import Input, Conv2D
from tensorflow.keras.optimizers import Adam
from tensorflow.keras import backend as K
def my_keras_model():
input = Input((256,256,1), name='input')
weight = Input((256,256,1), name='weights')
c1 = Conv2D(16, (3, 3), activation='relu', kernel_initializer='glorot_uniform', padding='same')(input)
outputs = Conv2D(1, (1, 1), activation='sigmoid')(c1)
model=Model(input=[input,weight], output=outputs)
model.compile(optimizer=Adam(learning_rate=0.001, name='adam'), loss=my_weighted_loss(weight))
return model
def my_weighted_loss(weight):
def loss(y_true, y_pred):
return K.mean(weight * K.binary_crossentropy(y_true, y_pred), axis=-1)
return loss
知道如何在 TF 2 中做到这一点吗?
【问题讨论】:
-
一种解决方案是禁用急切模式:
tf.compat.v1.disable_eager_execution()。
标签: python tensorflow keras tensorflow2.0