获取中间层tensorflow的输出



我必须在Tensorflow中获得中间层的输出,并计算相对于输出的梯度,而不是重量。这种方式返回None,这是获得输出并对其进行操作的正确方式吗?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])

使用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获取所需图层的输出。

最新更新