如何获取TensorFlow模型指定层的输出,以卷积层为例
获取Keras模型指定卷积层输出的方法
你可以通过构建中间提取模型的方式快速实现,这是最常用也最简洁的方案,无需重新训练模型,直接复用已训练好的权重即可,具体操作如下:
- 构建仅输出目标层结果的中间模型
import tensorflow as tf import numpy as np # 输入为原模型的输入,输出为你要提取的卷积层(第0层)的输出 conv_extractor = tf.keras.Model(inputs=model.input, outputs=model.layers[0].output)
- 传入输入x获取对应卷积层输出
你需要保证输入x的维度和原模型训练时的输入维度一致,如果你传入的是单个样本,需要手动补充batch维度:
# 示例:取测试集第一个样本作为输入x x = np.expand_dims(X_test[0], axis=0) # 方式1:用predict方法获取numpy格式的输出 conv_output = conv_extractor.predict(x, verbose=0) print(conv_output) # 方式2:直接调用模型得到tf张量,可通过.numpy()转numpy数组 conv_output_tensor = conv_extractor(x) conv_output = conv_output_tensor.numpy()
如果你需要同时提取多个层的输出,只需要将outputs参数改为层输出的列表即可,示例如下:
# 同时提取卷积层和平均池化层的输出 multi_extractor = tf.keras.Model( inputs=model.input, outputs=[model.layers[0].output, model.layers[1].output] ) conv_output, pool_output = multi_extractor.predict(x, verbose=0)
内容的提问来源于stack exchange,提问作者JJJohn
相关产品推荐
相关产品推荐

