tensorflow查看feature map的shape

方法一,输入一个常量,然后在tensorboard中查看。

方法二

sess = tf.Session(config=tfconfig)

import cv2
import numpy as np
img = cv2.imread('./image.jpg')
print('img shape =', img.shape)

operations = tf.get_default_graph().get_operations()
op_names = ['Placeholder']
for op in operations:
    if op.name.split('/')[-1] == 'Relu':
#        print(op.name)
        op_names.append(op.name)
#op_names = ['Placeholder',
#        'vgg_16/conv1/conv1_2/Relu',
#        'vgg_16/conv2/conv2_2/Relu',
#        'vgg_16/conv3/conv3_2/Relu',
#        'vgg_16/conv4/conv4_3/Relu',
#        'vgg_16/conv5/conv5_3/Relu',
#        'vgg_16_text/deconv_1/Relu',
#        'vgg_16_text/deconv_2/Relu',
#        'vgg_16_text/deconv_3/Relu',
#        'vgg_16_text/conv2-4/conv2-4_3/Relu']

for op in op_names:
    aa = sess.run(tf.get_default_graph().get_tensor_by_name(op + ':0'), feed_dict={image_tensor:img[np.newaxis,...]})  # 单张图是3维的,加一个轴
    print(op, aa.shape)

sess.close()

 

### 特征图 (Feature Map) 的可视化生成 以下是基于卷积神经网络(CNN)中的特征图可视化的 Python 示例代码。此代码展示了如何加载预训练模型并生成特定层的特征图。 #### 加载必要的库 为了实现这一功能,需要导入一些常见的深度学习框架以及辅助工具: ```python import numpy as np from tensorflow import keras from matplotlib import pyplot as plt ``` #### 定义函数以获取中间层输出 下面是一个通用函数 `get_feature_maps`,它可以接受一个 Keras 模型和指定的层数作为输入,并返回该层对应的激活值矩阵(即特征图)。这一步利用了 TensorFlow/Keras 提供的功能来访问模型内部各层的输出[^1]。 ```python def get_feature_maps(model, layer_index, input_image): # 创建一个新的模型,这个新模型会截取到目标层为止的部分 intermediate_layer_model = keras.Model(inputs=model.input, outputs=model.layers[layer_index].output) # 输入图片经过处理后的形状应匹配模型预期格式 img_array = np.expand_dims(input_image, axis=0) # 获取对应层上的激活值 feature_map = intermediate_layer_model.predict(img_array) return feature_map ``` #### 展示特征图 一旦获得了某一层的所有通道响应数据之后,就可以将其绘制成二维热力图形式以便观察。这里提供了简单的绘制逻辑: ```python def display_feature_maps(feature_maps, num_cols=8): """ 显示一组特征映射。 :param feature_maps: ndarray, shape=(batch_size, height, width, channels). 这里假设 batch_size 总是等于 1. :param num_cols: int, 要显示每行多少张子图,默认为8. """ total_features = feature_maps.shape[-1] size_per_row = min(num_cols, total_features) rows_needed = int(np.ceil(total_features / float(size_per_row))) fig, axes = plt.subplots(rows_needed, size_per_row, figsize=(size_per_row * 2, rows_needed * 2)) if not isinstance(axes, np.ndarray): axes = np.array([[axes]]) for i in range(total_features): ax = axes[i // size_per_row][i % size_per_row] heatmap_data = feature_maps[0,:,:,i] ax.imshow(heatmap_data, cmap='viridis') ax.axis('off') plt.tight_layout() plt.show() ``` 以上两部分结合起来可以完成从原始图像到最终可视化结果的过程。需要注意的是,在实际应用之前可能还需要对具体的数据集做适当调整,比如标准化像素范围或者裁剪大小等操作[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值