【发布时间】:2021-06-23 20:13:21
【问题描述】:
我必须在 Tensorflow 中获取中间层的输出,并计算相对于输出的梯度而不是权重。这种方式返回我无,这是获取输出和操作它的正确方法吗? Logits 是包含每一层输出的向量。
with tf.GradientTape(persistent = True) as tape:
logits.append(mnist_model.layers[0](images, training=True))
logits.append(mnist_model.layers[1](mnist_model.layers[0].output, training=True))
logits.append(mnist_model.layers[2](mnist_model.layers[1].output, training=True))
output = mnist_model(images, training=True)
loss_value = loss_object(labels, output)
loss_history.append(loss_value.numpy().mean())
grads0 = tape.gradient(loss_value, logits[0])
grads1 = tape.gradient(loss_value, logits[1])
grads2 = tape.gradient(loss_value, logits[2])
【问题讨论】:
-
计算梯度而不是权重...?你能在没有输出的情况下重现代码吗?
-
我的意思是我想计算相对于输出而不是相对于权重的梯度。我不知道我如何计算每一层的输出是否正确。
标签: tensorflow