-
深度学习caffe实战笔记(13)利用MATLAB可视化mnist数据集
2017-01-14 19:55:02之前的博客中介绍过利用MATLAB可视化图像特征,因为最近在看《深度学习21天实战caffe》,里面有一章节是关于可视化的,所以把可视化mnist数据集的代码共享一下,在这里要感谢赵永科老师clc; clear; close all; image...之前的博客中介绍过利用MATLAB可视化图像特征,因为最近在看《深度学习21天实战caffe》,里面有一章节是关于可视化的,所以把可视化mnist数据集的代码共享一下,在这里要感谢赵永科老师
clc; clear; close all; image_file_name='t10k-images.idx3-ubyte'; index_file_name='t10k-labels.idx1-ubyte'; fid1=fopen(image_file_name,'rb'); fid2=fopen(index_file_name,'rb'); image_data=fread(fid1,'uint8'); index_data=fread(fid2,'uint8'); fclose(fid1); fclose(fid2); image_data=image_data(17:end); index_data=index_data(9:end); image_buffer=zeros(28,28); for k=1:100:length(image_data)/28/28 figure(10000); for t=1:10000 image_buffer=reshape(image_data((k+t-2)*28*28+1:(k+t-1)*28*28),28,28)'; subplot(100,100,t); imshow(uint8(image_buffer)'); title(num2str(index_data(k+t-1))); end pause; end
效果图如下:
在这里要感谢赵永科老师,代码是赵老师书里的。
参考文献:《深度学习21天实战caffe》赵永科
-
深度学习Caffe实战(16)MATLAB实现模型参数权重可视化
2017-01-14 23:09:32前面博客中介绍了怎么样利用MATLAB实现特征图的可视化,那一篇博客中介绍了一个对权重可视化的博客,本来不打算写这个博客了,但是我仔细看了那一篇博客,有点繁琐,所以我又整理了一下用MATLAB实现模型参数权重可视...前面博客中介绍了怎么样利用MATLAB实现特征图的可视化,那一篇博客中介绍了一个对权重可视化的博客,本来不打算写这个博客了,但是我仔细看了那一篇博客,有点繁琐,所以我又整理了一下用MATLAB实现模型参数权重可视化的部分,这一篇介绍对第一个卷积层权重可视化,下一篇博客介绍Alexnet中2到5卷积层的可视化,请大家注意,只有卷积层才能可视化。
通过对训练后的模型进行可视化可以判断模型的优劣,怎么判断直接看博文后面的效果图,一看便知。直接放MATLAB代码,基于Alexnet,模型是前面介绍内容训练出来的模型,这个模型训练的不好,从参数权重图上就可以看出来,最后我会做一个好的和坏的第一个卷积层的参数可视化效果图,用于对比,如果想要可视化其它网络模型,只需要修改相应的部分就行,这里不再赘述。clc; clear; close all; addpath('../../../../matlab'); caffe.set_mode_cpu(); net=caffe.Net('alexnetdeploy.prototxt','cloth_iter_100000.caffemodel','test'); net.layer_names %显示都有哪些层 net.blob_names conv1_layer=net.layer_vec(1); blob1=conv1_layer.params(1); %注意只有卷积层是有参数的 w=blob1.get_data(); size(w) W=zeros(11*3,11*96); for u=1:3 for v=1:96 W(11*(u-1)+(1:11),11*(v-1)+(1:11))= w(:,:,u,v)'; end end W=W-min(min(W)); W=W/(max(max(W)))*255; %从0-1转换到255 W=uint8(W); W=[W,zeros(size(W,1),4*11)]; WW=cat(3,W(1:11,:),W(12:22,:),W(23:33,:)); W=zeros(10*12,10*12,3); for u=1:10 for v=1:10 W((u-1)*12+(1:11),(v-1)*12+(1:11),:)=WW(:,(u-1)*11*10+(v-1)*11+(1:11),:); end end W=uint8(W); figure; imshow(W);
效果图:
上面这是一个不好的效果图,因为图案类似噪音太严重,不够平滑,不够美观。
这一张权重图是bvlc_reference_caffenet.caffemodel的权重图,这个效果图比较平滑,也可以观察到一部分权重负责提取高频灰度特征,而另一些负责提取低频彩色特征。哪个好哪个坏,一看便知,这也是可视化权重的一个重要作用。
-
简单易学Matlab深度学习教程--数据可视化
2019-08-14 18:09:14数据可视化 要使用plot函数来绘制图形,需要执行以下步骤: 通过指定要绘制函数的变量x的值的范围来定义x。 定义函数,y = f(x) 调用plot命令,如下:plot(x,y) 以下示例将演示该概念。下面绘制x的值范围是从0到...数据可视化
要使用plot函数来绘制图形,需要执行以下步骤:
- 通过指定要绘制函数的变量x的值的范围来定义x。
- 定义函数,y = f(x)
- 调用plot命令,如下:plot(x,y)
以下示例将演示该概念。下面绘制x的值范围是从0到100,使用简单函数y = x,增量值为5。
创建脚本文件并键入以下代码 -
x = [0:5:100];
y = x;
plot(x, y)
在图上添加标题,标签,网格线和缩放
MATLAB允许沿x轴和y轴,网格线添加标题,标签,并且还可以调整轴来绘制图形。-
xlabel和ylabel命令沿x轴和y轴生成标签。
-
title命令用于在图表上设置标题。
-
grid on命令用于将网格线放在图形上。
-
axis equal命令允许生成具有相同比例因子的绘图和两个轴上的空格。
-
axis square命令生成一个方形图。
x = [0:0.01:10];
y = sin(x);
plot(x, y), xlabel(‘x’), ylabel(‘Sin(x)’), title(‘Sin(x) Graph’),
grid on, axis equal在同一个图上绘制多个函数
可以在同一个图上绘制多个图形。以下示例演示了这一概念 -
示例
创建脚本文件并键入以下代码 -
x = [0 : 0.01: 10];
y = sin(x);
g = cos(x);
plot(x, y, x, g, ‘.-’), legend(‘Sin(x)’, ‘Cos(x)’)
legend函数的基本用法是:
LEGEND(string1,string2,string3, …)
分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。**在图上设置颜色**
MATLAB提供了八个基本的颜色选项来绘制图形。 下表显示了颜色及其代码
设置轴刻度
axis命令用来设置轴刻度。可以通过以下方式使用axis命令为x和y轴提供最小和最大值:
axis ( [xmin xmax ymin ymax] )生成子图
当在同一个图中创建一个绘图数组时,这些图中的每一个图称为子图。
subplot命令用于创建子图。
该命令的语法是 :
subplot(m, n, p)
其中,m和n是绘图数组的行数和列数,p表示放置指定图形的位置。
使用subplot命令创建的每个曲线都可以有自己的特点。 以下示例演示了这一概念 -
示例
下面示例将生成两个区域块 -创建脚本文件并键入以下代码 -
x = [0:0.01:5];
y = exp(-1.5*x).sin(10x);
subplot(1,2,1)
plot(x,y), xlabel(‘x’),ylabel('exp(–1.5x)sin(10x)’),axis([0 5 -1 1])
y = exp(-2x).sin(10x);
subplot(1,2,2)
plot(x,y),xlabel(‘x’),ylabel(‘exp(–2x)*sin(10x)’),axis([0 5 -1 1])
MATLAB
执行上面示例代码,得到以下结果 -
绘制条形图
bar命令绘制二维条形图
示例
假设有10名学生,这些学生某次考试获得分数是:75,58,90,87,50,85,92,75,60和95,使用这此分数来绘制条形图如下。
创建脚本文件并键入以下代码 -
x = [1:10];
y = [75, 58, 90, 87, 50, 85, 92, 75, 60, 95];
bar(x,y), xlabel(‘Student’),ylabel(‘Score’),
title(‘First Sem:’)
print -deps graph.eps绘制等高线
两个变量的函数的轮廓线是一个曲线,函数有一个恒定值。等高线用于通过连接等于高于某一水平的点(如平均海平面)来创建轮廓图。
MATLAB提供了绘制轮廓图的contour函数。
示例:
contour(theta0_vals, theta1_vals, J_vals, logspace(-2, 3, 20));
%contour(X,Y,Z,v) 使用 X 和 Y 绘制 Z 的等高线图。V规定等高线的范围
%logspace(a,b,N) 把10的a次方到10的b次方区间分成N份三维图
三维图基本上显示的是由两个变量g = f(x,y)中的函数定义的表面。
像之前一样,要定义g,首先使用meshgrid命令在函数的域上创建一组(x,y)点。 接下来,分配函数本身。 最后,使用surf命令创建一个曲面图。
surf(x, y, g) -
深度学习Caffe实战笔记(10)Windows Caffe使用MATLAB接口提取和可视化特征
2017-01-07 19:50:54上一篇博客中介绍了如何使用MATLAB训练和测试数据,这篇博客介绍如何从训练好的模型中提取图像特征,并介绍把卷积层特征可视化方法。 之前提取特征都是用python,尽管用python提取特征很方便,但是感觉MATLAB提取...上一篇博客中介绍了如何使用MATLAB训练和测试数据,这篇博客介绍如何从训练好的模型中提取图像特征,并介绍把卷积层特征可视化方法。
之前提取特征都是用python,尽管用python提取特征很方便,但是感觉MATLAB提取特征更方便,因为博主对MATLAB比较熟悉,对python不太熟悉,,,,,,可视化部分我参考了http://www.2cto.com/kf/201609/550879.html,特征提取是我自己总结的,这个博客里还介绍了权重的可视化,大家自己去拜读一下吧。
开始train(最近博客审核的好慢啊)1、提取特征
当把图像数据forward之后,所有的数据都存在了blob当中,所以只需要从blob当中把数据提取出来即可,names=net.blob_names; %网络每一层的名字 featuremap=net.blobs(names{mapnum}).get_data();%获取指定层的特征图,mapnum需要自己指定,既哪一层
把names输出得到结果
这是每一层的名字,featuremap=net.blobs(names{mapnum}).get_data();
featuremap就是指定层的特征图,计算一个featuremap的大小,发现这是一个4维数据:[m_size,n_size,num,crop]=size(featuremap) %获取特征图大小,长*宽*卷积核个数*通道数 通道数就是上一篇博客里介绍的crop之后的10张图。m_size,n_size,num,crop分别代表feature map的长,宽,卷积核个数和通道数。
如果我们想要提取其中一张crop图的某一个featuremap,怎么办呢?
只需要 feature_map=featuremap(:,:,哪一个featuremap,哪一个crop)。这样就能完成特征提取,最后我会把特征提取的函数代码放在最后。
我们用Alexnet最常用的就是4096,那么怎么提取4096的特征呢,只需要:featuremap=net.blobs(names{13}).get_data();%13层就是fc7层
结果如下:
一共有4096*10维的特征,其中10就是10张crop图,求平均或者max,或者只需要拿出一个4096就能得到4096维的特征。是不是挺简单的?下面就是把特征图可视化出来,最后我会把可视化代码贴上去,这里可视化分为两部分,一个是部分可视化,指定哪一层,哪一个crop图可视化。第二个是全部可视化,只需要指定哪一层,把所有的featuremap可视化出来,效果图(指定第二层,第一张crop图,既卷积层的第一个crop的96个featuremap):
全部可视化效果:
知道为什么是960个featuremap吗?对,因为是96*10,96是卷积核数量,10是10个crop图,所以是960个featuremap。
代码如下:function [ ] = feature_partvisual( net,mapnum,crop_num ) %三个参数分别代表网络结构,第几层特征图,第几张crop_num,部分可视化 names=net.blob_names; featuremap=net.blobs(names{mapnum}).get_data();%获取指定层的特征图 [m_size,n_size,num,crop]=size(featuremap); %获取特征图大小,长*宽*卷积核个数*通道数 featuremap(:,:,1,crop_num); %第多少个卷积核,第几个crop_num的特征 row=ceil(sqrt(num));%行数 col=row;%列数 feature_map=zeros(m_size*row,n_size*col); cout_map=1; for i=0:row-1 for j=0:col-1 if cout_map<=num feature_map(i*m_size+1:(i+1)*m_size,j*n_size+1:(j+1)*n_size)=(mapminmax(featuremap(:,:,cout_map,crop_num),0,1)*255)'; cout_map=cout_map+1; end end end imshow(uint8(feature_map)); str=strcat('feature map num:',num2str(cout_map-1)); title(str) end
全部可视化:
function [ ] = feature_fullvisual( net,mapnum ) names=net.blob_names; featuremap=net.blobs(names{mapnum}).get_data();%获取指定层的特征图 [m_size,n_size,num,crop]=size(featuremap) %获取特征图大小,长*宽*卷积核个数*图片个数 row=crop;%行数 col=num;%列数 feature_map=zeros(m_size*row,n_size*col); for i=0:row-1 for j=0:col-1 feature_map(i*m_size+1:(i+1)*m_size,j*n_size+1:(j+1)*n_size)=(mapminmax(featuremap(:,:,j+1,i+1),0,1)*255)'; end end figure imshow(uint8(feature_map)) str=strcat('feature map num:',num2str(row*col)); title(str) end
主测试函数(包括了类别测试的代码)
clear; clc; addpath ../../../../matlab net = init_net(); %初始化网络 %im_data = caffe.io.load_image('test0020.jpg'); im_data=imread('test0001.jpg'); %读入图像 %imshow(im_data); input_data = {prepare_image(im_data)}; %准备数据,需要裁剪时裁剪数据 %不裁剪时使用reshape操作 % net.blobs('data').reshape([227 227 3 1]); % 当读进来一幅图像,不做裁剪操作时,这样使用 % net.reshape(); tic res = net.forward(input_data); %前向传播结果 mapnum=2; %第几层 crop_num=1; %第几张crop_num feature_partvisual( net,mapnum, crop_num ); %可视化部分feature map feature_fullvisual(net,mapnum); %可视化全部的feature map res=res{1}; res = mean(res, 2); % take average scores over 10 crops 求裁剪的10个batch平均值 toc [~, idx]= max(res); %找到最大的一个概率值 disp(idx-1); %输出类别标签 caffe.reset_all(); %关闭所有的网络
-
深度学习Caffe实战笔记(17)MATLAB实现卷积层卷积核权重的可视化
2017-01-15 10:21:40上一篇博客介绍了如果可视化第一个卷积层的卷积核,可视化的一个重要作用就是判断训练权重的好坏,效果图可以参考我上一篇博客,这篇博客介绍把卷积核可视化写成MATLAB的一个函数,用来直接调用就可以实现卷积核权重... -
matlab实现平滑深度学习网络训练曲线
2019-03-23 14:43:45小编最近写文章的时候发现,训练网络,使用tensorboard进行可视化展示出来的精度曲线下载后生成csv或json类型的文件,小编尝试了使用各种方法进行文件的读取和绘图,但出来的效果并不能很好的展示在文章上面。... -
深度学习之Python的可视化包 – Matplotlib
2017-10-28 14:22:585.4 Python的可视化包 –...Matplotlib最早是为了可视化癫痫病人的脑皮层电图相关的信号而研发,因为在函数的设计上参考了MATLAB,所以叫做Matplotlib。Matplotlib首次发表于2007年,在开源和社区的推动下,现在在基于P -
Matlab深度学习——入门
2020-04-12 18:27:02使用应用程序和可视化工具创建、修改和分析深度学习架构 使用应用程序预处理数据,并自动对图像、视频和音频数据进行真值标注 在 NVIDIA® GPU、云和数据中心资源上加速算法,而无需专门编程 与基于 TensorFlow、P..... -
bp神经网络数字识别matlab_卷积神经网络学习识别手写数字时的可视化
2020-11-24 04:22:57观看此神经网络了解在整个模型训练中可视化卷积层激活Image by Sian Molloy警告,该文章有不少大尺寸的图。动机与其他机器学习技术相比,深度学习的主要优势在于它能够自动学习输入数据的抽象表示。 但是,并非总是... -
MATLAB与深度学习(一)— Deep Learning Toolbox
2020-03-20 22:35:21MATLAB与深度学习(一)— Deep Learning Toolbox ...使用应用程序和可视化工具创建、修改和分析深度学习架构。 使用应用程序预处理数据,并自动对图像、视频和音频数据进行真值标注 。 在 NVIDIA®... -
深度学习项目示例-采用caffe实现LENET网络实现铲齿识别-并可视化过程
2018-02-27 17:39:18跑出结果对应的记录 ...归一化方式:计算图像均值 读取每一层输出对应的记录 deploy如何写 读取每一层的输出对应的matlab程序 尚存在的问题 跑出结果对应的记录 修改过程 起初... -
小迈步第一课: MATLAB深度学习入门课堂
2019-03-14 21:44:20实用的数据标注和可视化工具 强大的代码生成功能 支持多平台部署 3. 仅用11行代码实现图像分类 1行代码直接导入经典的Alexnet网络模型 通过摄像头实时采集图像数据,可识别1000种常见物体 4. 迁移学习的力量 基于... -
MATLAB 快速标准绘图的实现(一)
2021-01-23 21:43:00MATLAB 快速标准绘图的实现 目录MATLAB 快速标准绘图的实现前言一、绘图中采用的函数二、函数模块1.检查输入变量2.绘制图像3....MATLAB软件提供的Simulink工具箱可实现可视化模块的建构和模型仿真 -
matlab显示文件夹下的多副图像
2017-03-09 10:25:58最近在写深度学习算法方案的时候,需要在方案书附录中对imagenet数据集可视化,但imagenet数据集中的图像大小并不完全相同,经过一番努力,显示效果才达到导师的要求,故这里把我实现过程中的小问题记录下来,方便... -
测试 matlab_Matlab R2020a HPC类并行负载测试
2020-12-28 15:18:41 Matlab是世界知名和广泛用于教学和生产环境的数据可视化,科学计算开发软件,正如其全称matrix&laboratory所说,其主要用于矩阵计算相关的工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模... -
MATLAB个人入坑指南
2020-08-08 23:51:54但python的优势在于有各种各样的库文件,在做一些可视化分析等多样化、多元化的工作时,使用python的库文件便能够很简洁的完成。例如, 读取与保存大数据文件 调整图像大小 使用深度预训练模型 ... -
Matlab-Deep Learning Toolbox
2019-04-08 21:32:13深度学习调整和可视化 绘制培训进度,评估准确性,进行预测,调整培训选项以及可视化网络学习的功能 并行和云中的深度学习 通过本地或云中的多个GPU扩展深度学习,并以交互方式或批量作业培训多个网络 深度学习... -
matlab 设置最大并行数_Matlab R2020a,迎战HPC并行计算任务
2020-11-28 10:56:57Matlab是世界知名和广泛用于教学和生产环境的数据可视化,科学计算开发软件,正如其全称matrix&laboratory所说,其主要用于矩阵计算相关的工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模... -
Matlab R2020b linux安装包
2020-12-08 16:08:41该软件常用于机器人、数据分析、无线通信、深度学习、信号处理、计算机视觉等众多领域之中,深厚上百万科学家和工程师的信赖,提供了科学数据可视化、矩阵计算、数值分析、绘制函数、数据图像、实时编辑器等实用的... -
Matlab R2020a linux安装包
2020-11-10 13:33:38该软件常用于机器人、数据分析、无线通信、深度学习、信号处理、计算机视觉等众多领域之中,深厚上百万科学家和工程师的信赖,提供了科学数据可视化、矩阵计算、数值分析、绘制函数、数据图像、实时编辑器等实用的... -
Matlab 读写*.xml文件
2018-04-11 19:18:44Matlab 读写*.xml文件1.摘要 因为经常使用将图像中的目标标注信息保存在*.xml文件中。在训练深度神经网络是常用这样的训练数据。...②将*.xml文件中的信息显示在对应的图像上,可以简单可视化数据;③将在图像中... -
MATLAB图像处理与界面编程宝典pdf part4
2015-01-07 01:27:33从图形绘制开始,层层深入MATLAB的二维和三维图像绘制功能,此外还介绍了科学计算可视化的相关知识。第2部分“图像处理工具箱详解”,包括第11~第19章,详细讲解了图像处理工具的各项功能及相关函数,并对有关的... -
MATLAB图像处理与界面编程宝典pdf part1
2015-01-07 01:15:03从图形绘制开始,层层深入MATLAB的二维和三维图像绘制功能,此外还介绍了科学计算可视化的相关知识。第2部分“图像处理工具箱详解”,包括第11~第19章,详细讲解了图像处理工具的各项功能及相关函数,并对有关的... -
压力测试和负载测试区别_Matlab R2020a HPC类并行负载测试
2020-11-16 14:54:00 Matlab是世界知名和广泛用于教学和生产环境的数据可视化,科学计算开发软件,正如其全称matrix&laboratory所说,其主要用于矩阵计算相关的工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模... -
QuickLib(期货行情、交易库Python CTP程序化例子源代码) 2.05
2016-12-16 13:04:20Numpy和Scipy常常结合着使用,Python大多数机器学习库都依赖于这两个模块,绘图和可视化依赖于matplotlib模块,matplotlib的风格与matlab类似。Python机器学习库非常多,而且大多数开源,主要有: 1. scikit-learn... -
alles:所有需要居住的小型项目,请住在这里。 优化,数值方法,图论等-源码
2021-04-01 08:14:44可视化 从C绘图输出 Julia的情节输出 深度学习 。 平滑到粗糙的正方形 有些是用Matlab编写的,有些是用C编写的,有些是用Fortran编写的,有些是用Julia编写的,有些使用Python包。 有些是我写的,有些是我在书中... -
Enterprise_Credit_Analysis:企业信用分析平台(EEAP)-源码
2021-02-04 00:05:21一个集企业信息查询,数据分析,推理,评估,预测企业信用可视化分析平台下阶段会基于知识图谱,机器学习算法,深度神经网络进行风险评估及关联关系推理 第一阶段研发工作【170901--180601】 平台架构 系统架构主要... -
检索可视化。这一步运行queryInDatabaseDemo.m即可。 4). 计算mAP。不需要计算MAP的这步略过。运行compute_MAP.m,关于mAP的计算,请参阅我画的mAP计算过程示意图:信息检索评价指标,这个计算mAP的脚本是按照那个...
-
LSHBOX:局部敏感算法(LSH)的C++工具箱,提供了好几种普遍的LSH算法,也可以支持Python和MATLAB。 PGM-index:能够快速查找、前导、范围搜索和更新数以亿计项数组的数据结构,其跟传统索引相比,使用梯度的顺序而...
-
Python数据挖掘工程师(机器学习、深度学习、算法专家) Python爬虫工程师 Python测试工程师(自动化测试、测试开发) 说明:目前,数据分析是一个非常热门的方向,因为不管是互联网行业还是传统行业都已经积累了...