我必须在 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])
答案 0 :(得分:1)
使用model.get_layer("layer_name")
获取中间层的输出并找到下面的示例代码
with tf.GradientTape() as tape:
mid_layer = mnist_model.get_layer[layer_index].output
loss = loss_object(labels, mid_layer)
grads = tape.gradient(loss, inp)
使用 layer_index 或 layer_name 获取所需层的输出。