获取中间层tensorflow的输出

时间:2021-06-10 17:15:15

标签: tensorflow

我必须在 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])

1 个答案:

答案 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 获取所需层的输出。