可视化CNN feature map 现存问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_27643275/article/details/80613776

1、tensorboard显示:

tf.summary.image(name="?" , tensor=?)

主要问题:卷积层特征图通道都很大,需要进行重新reshape成Tensorboard可以显示的通道数(1或3或4)

方法一:

def _concact_features(conv_output):
    """
    对特征图进行reshape拼接
    由于卷积层特征图通道都很大,需要进行重新reshape成Tensorboard可以显示的通道数(1或3或4),这里全部变成了单通道的特征图
    :param conv_output:输入多通道的特征图
    :return:
    """
    num_or_size_splits = conv_output.get_shape().as_list()[-1]
    each_convs = tf.split(conv_output, num_or_size_splits=num_or_size_splits, axis=3)
    concact_size = int(math.sqrt(num_or_size_splits) / 1)
    all_concact = None
    for i in range(concact_size):
        row_concact = each_convs[i * concact_size]
        for j in range(concact_size - 1):
            row_concact = tf.concat([row_concact, each_convs[i * concact_size + j + 1]], 1)
        if i == 0:
            all_concact = row_concact
        else:
            all_concact = tf.concat([all_concact, row_concact], 2)

    return all_concact

方法二

2、plt显示:
普通图片展示

from PIL import Image
import matplotlib.pyplot as plt
test_img = Image.open(test_path)

plt.figure(0)

########如果图片不想要改变大小
plt.imshow(test_img)

########如果图片需要改变大小
test_img_plt=tf.image.resize_images(test_img,(new_height, new_width),0)
plt.imshow(test_img_plt.eval())

plt.show()

卷积特征图展示:

plt.figure(1)
conv=sess.run(tensor,feed_dict=)
#conv为四维
conv_plt=_concact_features(conv)
#conv_plt为三维
plt.imshow(conv_plt)

主要问题:Image data cannot be converted to float尚未解决

猜你喜欢

转载自blog.csdn.net/baidu_27643275/article/details/80613776