caffe 可视化特征图,可视化 loss和 ac

test.py

# coding=utf-8

import numpyas np

import matplotlib.pyplotas plt

from PILimport Image

import os

import sys

import caffe

#网络结构描述文件

deploy_file ="D:/Caffee/caffe-master/examples/mnist/lenet.prototxt"

#模型文件

model_file  ="D:/Caffee/caffe-master/examples/mnist/models/lenet_iter_10000.caffemodel"

#测试图片

test_data  ="D:/Caffee/caffe-master/examples/mnist/MNIST_data/0-9/8.bmp"

#特征图路径

feature_map_path ="D:/Caffee/caffe-master/examples/mnist/draw_data/"

#编写一个函数,用于显示各层的参数,padsize用于设置图片间隔空隙,padval用于调整亮度

def show_data(data, name, padsize=1, padval=0):

#归一化

    data -= data.min()

data /= data.max()

#根据data中图片数量data.shape[0],计算最后输出时每行每列图片数n

    n = int(np.ceil(np.sqrt(data.shape[0])))

# 对于conv1,data.shape->(20,24,24)

    # (前面填补0个,后面填补n ** 2 - data.shape[0]),(前面填补0个,后面填补padsize个),(前面填补0个,后面填补padsize个)

    padding = ((0, n **2 - data.shape[0]), (0, padsize), (0, padsize))

data = np.pad(data, padding, mode='constant', constant_values=padval)#常数值填充,填充0

    # 对于conv1,padding后data.shape->(25,25,25)

    # 对于conv1,将(25,25,25)reshape->(5,5,25,25)再transpose->(5,25,5,25)

    data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3))

# 再将(n, W, n, H)变换成(n*w, n*H)

    data = data.reshape((n * data.shape[1], n * data.shape[3]))

image_path = os.path.join(feature_map_path,name)#特征图路径

    plt.set_cmap('gray')#设置为灰度图

    plt.imsave(image_path,data)#保存生成的图片

    plt.axis('off')#不显示坐标

    print name

#显示图片

    img=Image.open(image_path)

plt.imshow(img)

plt.show()

#----------------------------数据预处理---------------------------------

#初始化caffe

net = caffe.Net(deploy_file, #网络结构描述文件

                model_file,  #训练好的模型

                caffe.TEST)#使用测试模式

#输出网络每一层的参数

print [(k, v[0].data.shape)for k, vin net.params.items()]

transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})

# python读取的图片文件格式为H×W×K(高度,宽度,通道数),需转化为K×H×W(通道数,高度,宽度)

transformer.set_transpose('data', (2, 0, 1))

# python中将图片存储为[0-1]

# 如果模型输入用的是0~255的原始格式,则需要做以下转换

# transformer.set_raw_scale('data', 255)

# caffe中图片是BGR格式,而原始格式是RGB,所以要转化

#transformer.set_channel_swap('data', (2, 1, 0))

#----------------------------数据运算---------------------------------

#读取图片

#参数color: True(default)是彩色图,False是灰度图

img = caffe.io.load_image(test_data,color=False)

# 数据输入、预处理

net.blobs['data'].data[...] = transformer.preprocess('data', img)

# 将输入图片格式转化为合适格式(与deploy文件相同)

net.blobs['data'].reshape(1, 1, 28, 28)

# 前向迭代,即分类。保存输出

out = net.forward()

# 输出结果为各个可能分类的概率分布

print"Prob:"

print out

print out['prob']

#最可能分类

predict = out['prob'].argmax()

print"Result:" + str(predict)

#----------------------------输出特征图---------------------------------

#第一个卷积层输出的特征图

feature = net.blobs['conv1'].data

show_data(feature.reshape(20,24,24),'conv1.jpg')

#第一个池化层输出的特征图

feature = net.blobs['pool1'].data

show_data(feature.reshape(20,12,12),'pool1.jpg')

#第二个卷积层输出的特征图

feature = net.blobs['conv2'].data

show_data(feature.reshape(50,8,8),'conv2.jpg')

#第二个池化层输出的特征图

feature = net.blobs['pool2'].data

show_data(feature.reshape(50,4,4),'pool2.jpg')


曲线可视化:各种修改叫脚本

训练loss和accuracy可视化:

1.把caffe-windows\tools\extra目录下的plot_training_log.py.example,拷贝一份改名为

plot_training_log.py。

2.获得log文件

3.python执行plot_training_log.py

第一个参数:0-7

训练或者测试的accuracy,loss等数据

第二个参数:图片存放位置

第三个参数:log文件

画图出现错误可以参考下面文章:

http://blog.csdn.net/sunshine_in_moon/article/details/5354157

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容