zoukankan      html  css  js  c++  java
  • 学习进度笔记15

    观看Tensorflow案例实战视频课程15 使用VGG模型进行测试

    import numpy as np
    import os
    import scipy.misc
    import matplotlib.pyplot as plt
    import tensorflow as tf
    
    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','pool5',
        )
        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")
    
    cwd=os.getcwd()
    VGG_PATH=cwd+"/data/imagenet-vgg-verydeep-19.mat"
    IMG_PATH=cwd+"/data/cat.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=('relu2_1','relu3_1','relu4_1')
        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))
                plt.matshow(features[0,:,:,0],cmap=plt.cm.gray,fignum=i+1)
                plt.title(""+layer)
                plt.colorbar()
                plt.show() 
  • 相关阅读:
    根据不同运行环境配置和组织node.js应用
    python下pip使用bug汇总
    python的虚拟环境
    nginx使用手册--nginx的命令行参数
    nginx使用手册--nginx.conf文件配置详解
    使用async读取异步数据
    [Bootstrap]组件(三)
    [Bootstrap]组件(二)
    [Bootstrap]组件(一)
    [javascript|基本概念|一元操作符]学习笔记
  • 原文地址:https://www.cnblogs.com/zql-42/p/14625983.html
Copyright © 2011-2022 走看看