【发布时间】:2021-07-06 18:26:21
【问题描述】:
从here窃取示例代码:
def custom_loss_wrapper(input_tensor):
def custom_loss(y_true, y_pred):
return K.binary_crossentropy(y_true, y_pred) + K.mean(input_tensor)
return custom_loss
input_tensor = Input(shape=(10,))
hidden = Dense(100, activation='relu')(input_tensor)
out = Dense(1, activation='sigmoid')(hidden)
model = Model(input_tensor, out)
model.compile(loss=custom_loss_wrapper(input_tensor), optimizer='adam')
X = np.random.rand(1000, 10)
y = np.random.rand(1000, 1)
model.train_on_batch(X, y)
这在最近的 Tensorflow 版本中不再有效。我看到的主要解决方案是禁用急切执行,但这会破坏我正在做的其他事情。
如何在保持渴望模式时保持这种类型的功能?也就是说,将输入传递给损失函数?我能想到的最好的办法是修改网络以将输入连接到输出,然后在损失中将其拉开。不过很笨拙。
【问题讨论】:
标签: python tensorflow machine-learning keras deep-learning