【发布时间】:2021-09-28 22:17:12
【问题描述】:
假设我有一个输出为 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
【问题讨论】:
标签: tensorflow keras gradient