B站上的一个MATLAB与神经网络的视频,捡漏

时间:2023-03-09 19:17:12
B站上的一个MATLAB与神经网络的视频,捡漏

▶ av15514817。这里集中了一些从视频中学到的散点。

▶ 语句 "edit + 函数名" 可以打开部分内置函数的源代码。非公开的源代码这会打开一个全是注释的文档。

▶ 函数文件中隐式定义了变量 varargin,varargout,nargin,nargout,分别代表输入函数的参数、输出函数的参数、输入函数的参数个数,输出函数的参数个数。

▶ 使用“发布”功能,MATLAB生 会将脚本运行一遍,生成一个 HTML 文档,内含脚本代码和输出结果,方便其他人在浏览器中阅读。

▶ 输出图形时使用导出设置来手工调节输出效果。

  B站上的一个MATLAB与神经网络的视频,捡漏

▶ 语句 "feature memstats" 查看内存使用情况。

▶ 当程序涉及多层嵌套循环时,将循环次数较多的循环放到内层中,效率较高。

▶ 有关图形句柄。图形句柄用一个数值变量来代表。根句柄(0)→ 窗口句柄(正整数)→ UI 对像,坐标轴……(浮点数)

▶ 函数 "get(句柄值)" 将获得该句柄属性的结构体表示。

▶ 语句 "gca" 意思是 get current axis,即获得当前坐标轴的句柄属性。

▶ 在一张图中插入多个图里的方法。一般情况下一个坐标轴只允许有一个图例框,可以设法创建一个不可兼得坐标轴,在在该坐标轴中添加图例,与原图的图例区分开。

▶ 几种常用的激活函数。

  B站上的一个MATLAB与神经网络的视频,捡漏

▶ BP(BackPropagation)神经网络要求激活函数可微。

▶ 数据归一化的原因。

● 数据带有不同单位,变化范围大,导致神经网络收敛慢,训练时间长。

● 分布范围大的数据在模式分类中作用偏大,分布范围小的数据在模式分类中作用偏小。

● 神经网络值域有限,需要将目标数据限制在激活函数值域以内。

● S 型激活函数在很大的数据范围上变化平缓,区分度太小。

▶ 归一化算法可以归到 [ 0 , 1 ] 或 [ -1 , 1 ] 。

▶ MATLAB 中使用函数 mapminmax() 来实现归一化。

 y = mapminmax(x)                % 将矩阵 x 的每一行分别归一化到 [-, ]
y = mapminmax(x, a, b) % 将矩阵 x 的每一行分别归一化到 [a, b] [y, z] = mapminmax(x, a, b) % 同时返回一个结构体,保存了当前归一化变换的参数信息 u = mapminmax.apply(w, z) % 利用上面的结构体对新的矩阵 w 进行线性变换。要求 w 行数等于 x 行数,列数可以不同。因为 x 每一行的变换不尽相同,相当于有多个变换函数按行分别作用。
u = mapminmax('apply', w, z) % 等价用法 v = mapminmax.reverse(w, z) % 利用上面的结构体对新的矩阵 w 进行线性反变换。要求同上。
v = mapminmax('reverse', w, z) % 等价用法 % 举例:
x = [, , ; , , ; , , ];
y = mapminmax(x); % y = [-, , ; -, , ; -, , ],归一化到 [-, ] 上
y = mapminmax(x, , ); % y = [, 3.5, ; , 3.5, ; , 3.5, ],归一化到 [, ] 上
[y, z] = mapminmax(x, , ); % y 同上
% z 的成员如下:
% name: 'mapminmax'
% xrows:
% xmax: [3x1 double] z.xmax = [; ; ]
% xmin: [3x1 double] z.xmin = [; ; ]
% xrange: [3x1 double] z.xrange = [; ; ]
% yrows:
% ymax:
% ymin:
% yrange:
% gain: [3x1 double] z.gain = [0.5; 0.5; 0.5]
% xoffset: [3x1 double] z.xoffset = [; ; ]
% no_change: w = [, , , ; , , , ; , , , ];
u = mapminmax.apply(w, z) % u = [4.5, 4.0, 3.5, 3.0; 5.0, 3.5, 4.0, 4.5; 5.5, 4.0, 5.0, 4.5]
% 说明:z 将 x 的第一行 [, , ] 线性变换到 [, ],将该变换作用于 [, , , ] 即得到 [4.5, 4.0, 3.5, 3.0],另外两行类似 v = mapminmax.reverse(w, z) % v = [, , -, -; , , , ; , , , ]
% 说明:z 将 x 的第一行 [, , ] 线性变换到 [, ],将该变换的反变换作用于 [, , , ] 即得到 [, , -, -],另外两行类似