tensorflow卷积层可视化的实现。基于VGG-19.

原创 2018年04月16日 14:47:35
#导入包
import scipy.io
import numpy as np 
import os 
import scipy.misc 
import matplotlib.pyplot as plt 
import tensorflow as tf
#import seaborn as sns  #用来画热度图

#定义网络结构,本文用的是VGG-19
def _conv_layer(input, weights, bias):
    conv = tf.nn.conv2d(input, tf.constant(weights), strides=(1, 1, 1, 1),
            padding='SAME')
    return tf.nn.bias_add(conv, bias)
def _pool_layer(input):
    return tf.nn.max_pool(input, ksize=(1, 2, 2, 1), strides=(1, 2, 2, 1),
            padding='SAME')
def preprocess(image, mean_pixel):
    return image - mean_pixel
def unprocess(image, mean_pixel):
    return image + mean_pixel
def imread(path):
    return scipy.misc.imread(path).astype(np.float)
def imsave(path, img):
    img = np.clip(img, 0, 255).astype(np.uint8)
    scipy.misc.imsave(path, img)
print ("Functions for VGG ready")

def net(data_path, input_image):
    layers = (
        'conv1_1', 'relu1_1', 'conv1_2', 'relu1_2', 'pool1',
        'conv2_1', 'relu2_1', 'conv2_2', 'relu2_2', 'pool2',
        'conv3_1', 'relu3_1', 'conv3_2', 'relu3_2', 'conv3_3',
        'relu3_3', 'conv3_4', 'relu3_4', 'pool3',
        'conv4_1', 'relu4_1', 'conv4_2', 'relu4_2', 'conv4_3',
        'relu4_3', 'conv4_4', 'relu4_4', 'pool4',
        'conv5_1', 'relu5_1', 'conv5_2', 'relu5_2', 'conv5_3',
        'relu5_3', 'conv5_4', 'relu5_4'
    )
    data = scipy.io.loadmat(data_path)
    mean = data['normalization'][0][0][0]
    mean_pixel = np.mean(mean, axis=(0, 1))
    weights = data['layers'][0]
    net = {}
    current = input_image
    for i, name in enumerate(layers):
        kind = name[:4]
        if kind == 'conv':
            kernels, bias = weights[i][0][0][0][0]
            # matconvnet: weights are [width, height, in_channels, out_channels]
            # tensorflow: weights are [height, width, in_channels, out_channels]
            kernels = np.transpose(kernels, (1, 0, 2, 3))
            bias = bias.reshape(-1)
            current = _conv_layer(current, kernels, bias)
        elif kind == 'relu':
            current = tf.nn.relu(current)
        elif kind == 'pool':
            current = _pool_layer(current)
        net[name] = current
    assert len(net) == len(layers)
    return net, mean_pixel, layers
print ("Network for VGG ready")

#展示VGG-19每一层的特征图。一共有36层,就有36张特征图。
cwd  = os.getcwd()
VGG_PATH = cwd+"\\imagenet-vgg-verydeep-19.mat"   #导入数据,初始化网络。
IMG_PATH = cwd+"\\123.jpg"     #导入图片
input_image = imread(IMG_PATH)
shape = (1,input_image.shape[0],input_image.shape[1],input_image.shape[2]) 
with tf.Session() as sess:
    image = tf.placeholder('float', shape=shape)
    nets, mean_pixel, all_layers = net(VGG_PATH, image)
    input_image_pre = np.array([preprocess(input_image, mean_pixel)])
    layers = all_layers # For all layers 
   # layers = ('conv1_1', 'conv2_2','conv3_2','conv5_2')
    for i, layer in enumerate(layers):
        print ("[%d/%d] %s" % (i+1, len(layers), layer))
        features = nets[layer].eval(feed_dict={image: input_image_pre})
        
        print (" Type of 'features' is ", type(features))
        print (" Shape of 'features' is %s" % (features.shape,))
        # Plot response 
        if 1:
            plt.figure(i+1, figsize=(10, 5))
            #heatmap = sns.heatmap(features[0, :, :, 0])   #此处显示的是热度图。
            plt.matshow(features[0, :, :, 0],  fignum=i+1,cmap=plt.cm.gray)  #显示灰度图
            plt.title("" + layer)
            plt.colorbar()
            plt.show()
源码下载地址:

Delphi可视化精讲视频教程

目前市场上delphi教程少之又少,这让很多对delphi编程感兴趣的学员无从下手。本课程本着“理论+实践”的讲课原则,由浅入深的详细讲解delphi这门编程语言,零基础的学员也能学会。本套课程每节课都提供课件供学员们下载,方便学员们的复习。 Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;
  • 2017年11月28日 21:14

Tensorflow可视化中间层和卷积层

为了查看网络训练的效果或者便于调参、更改结构等,我们常常将训练网络过程中的loss、accurcy等参数。除此之外,有时我们也想要查看训练好的网络中间层输出和卷积核上面表达了什么内容,这可以帮助我们思...
  • nini_coded
  • nini_coded
  • 2018-02-06 03:53:52
  • 269

可视化tensorflow中间层

如何可视化使用tensorflow框架的网络中间层呢,网上找的答案都是使用tensor board,但是我想的是将网络的中坚层用一张一张图片显示并保存下来,下面附上代码: #-*-coding:utf...
  • qq_14839543
  • qq_14839543
  • 2017-09-28 09:47:57
  • 524

用TensorFlow可视化卷积层的方法

深度学习中对于卷积层的可视化可以帮助理解卷积层的工作原理与训练状态,然而卷积层可视化的方法不只一种。最简单的方法即直接输出卷积核和卷积后的filter通道,成为图片。然而也有一些方法试图通过反卷积(转...
  • omnispace
  • omnispace
  • 2017-12-21 16:40:14
  • 1277

学习Tensorflow,反卷积

在深度学习网络结构中,各个层的类别可以分为这几种:卷积层,全连接层,relu层,pool层和反卷积层等。目前,在像素级估计和端对端学习问题中,全卷积网络展现了他的优势,里面有个很重要的层,将卷积后的f...
  • helei001
  • helei001
  • 2016-06-12 16:58:54
  • 11748

用反卷积(Deconvnet)可视化理解卷积神经网络

可视化理解卷积神经网络 原文地址:http://blog.csdn.net/hjimce/article/details/50544370 作者:hjimce 一、相关理论 ...
  • lemianli
  • lemianli
  • 2016-11-15 15:42:37
  • 15601

tensorflow 学习笔记(七)- 卷积层

tensorflow 学习笔记(七)- 卷积层 在之前我们有做tensorflow的实例的运行了,但是可能有些读者还是不知道每一层中的参数的含义,所以之后的几篇文章将从tensorflow中的每一层...
  • m0_37167788
  • m0_37167788
  • 2018-01-15 17:38:22
  • 159

82、TensorFlow教你如何构造卷积层

''' Created on 2017年4月22日 @author: weizhen ''' import tensorflow as tf #通过tf.get_variable的方式创建过滤器的权...
  • u012416045
  • u012416045
  • 2017-10-13 11:13:41
  • 106

tensorflow卷积层可视化的实现。基于VGG-19.

#导入包 import scipy.io import numpy as np import os import scipy.misc import matplotlib.pyplot as p...
  • donkey_1993
  • donkey_1993
  • 2018-04-16 14:47:35
  • 35

卷积神经网络CNN:Tensorflow实现(以及对卷积特征的可视化)

本文主要是实现了一个简单的卷积神经网络,并对卷积过程中的提取特征进行了可视化. 卷积神经网络最早是为了解决图像识别的问题,现在也用在时间序列数据和文本数据处理当中,卷积神经网络对于数据特征的...
  • u014281392
  • u014281392
  • 2017-07-04 13:51:44
  • 9275
收藏助手
不良信息举报
您举报文章:tensorflow卷积层可视化的实现。基于VGG-19.
举报原因:
原因补充:

(最多只允许输入30个字)