假设我有一个多输出模型,输出为y_0和y_1。对于一些数据示例,我确信y_0是正确的,但我知道y_1可能完全是猜测。我的想法是使用自定义训练循环并乘以计算出的权重,但这似乎不起作用。有没有比这更简单的方法来通过keras api来做这件事呢?
@tf.function
def train_on_batch(x,y):
y_true = y[:, 0]
weights = y[:,1]
with tf.GradientTape() as tape:
y_pred = model(x, training=True)
print("ytrainpred ", y_pred)
loss_value_pre = loss(y_true, y_pred)
loss_value = loss_value_pre * weights
# compute gradient
grads = tape.gradient(loss_value, model.trainable_weights)
# update weights
optimizer.apply_gradients(zip(grads, model.trainable_weights))
# update metrics
loss_1_train.update_state(y_true[:, 0], loss_value[:,0])
loss_2_train.update_state(y_true[:, 1], loss_value[:,1)
return loss_value
发布于 2021-09-28 23:45:31
在keras对象的compile方法中,您有一个名为loss weights的参数来执行此操作,您只需要实现损失函数,这些函数接受一个或另一个输出,并作为损失数组传递给loss参数,但是如果您有许多
https://stackoverflow.com/questions/69369036
复制相似问题