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

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

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

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

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

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

  

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

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

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

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

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

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

▶ 几种常用的激活函数。

  

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

▶ 数据归一化的原因。

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

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

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

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

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

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

 1 y = mapminmax(x)                % 将矩阵 x 的每一行分别归一化到 [-1, 1]
 2 y = mapminmax(x, a, b)          % 将矩阵 x 的每一行分别归一化到 [a, b]
 3 
 4 [y, z] = mapminmax(x, a, b)     % 同时返回一个结构体,保存了当前归一化变换的参数信息
 5 
 6 u = mapminmax.apply(w, z)       % 利用上面的结构体对新的矩阵 w 进行线性变换。要求 w 行数等于 x 行数,列数可以不同。因为 x 每一行的变换不尽相同,相当于有多个变换函数按行分别作用。
 7 u = mapminmax('apply', w, z)    % 等价用法
 8 
 9 v = mapminmax.reverse(w, z)     % 利用上面的结构体对新的矩阵 w 进行线性反变换。要求同上。
10 v = mapminmax('reverse', w, z)  % 等价用法
11 
12 % 举例:
13 x = [1, 2, 3; 4, 5, 6; 7, 8, 9];
14 y = mapminmax(x);               % y = [-1, 0, 1; -1, 0, 1; -1, 0, 1],归一化到 [-1, 1] 上
15 y = mapminmax(x, 3, 4);         % y = [3, 3.5, 4; 3, 3.5, 4; 3, 3.5, 4],归一化到 [3, 4] 上
16 [y, z] = mapminmax(x, 3, 4);    % y 同上
17                                 % z 的成员如下:
18                                 %      name: 'mapminmax'
19                                 %     xrows: 3
20                                 %      xmax: [3x1 double]   z.xmax = [3; 6; 9]
21                                 %      xmin: [3x1 double]   z.xmin = [1; 4; 7]
22                                 %    xrange: [3x1 double]   z.xrange = [2; 2; 2] 
23                                 %     yrows: 3
24                                 %      ymax: 4
25                                 %      ymin: 3
26                                 %    yrange: 1
27                                 %      gain: [3x1 double]   z.gain = [0.5; 0.5; 0.5]
28                                 %   xoffset: [3x1 double]   z.xoffset = [2; 2; 2]
29                                 % no_change: 0
30 
31 w = [4, 3, 2, 1; 8, 5, 6, 7; 12, 9, 11, 10];
32 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]
33     % 说明:z 将 x 的第一行 [1, 2, 3] 线性变换到 [3, 4],将该变换作用于 [4, 3, 2, 1] 即得到 [4.5, 4.0, 3.5, 3.0],另外两行类似
34 
35 v = mapminmax.reverse(w, z)     % v = [3, 1, -1, -3; 14, 8, 10, 12; 25, 19, 23, 21]
36     % 说明:z 将 x 的第一行 [1, 2, 3] 线性变换到 [3, 4],将该变换的反变换作用于 [4, 3, 2, 1] 即得到 [3, 1, -1, -3],另外两行类似 
原文地址:https://www.cnblogs.com/cuancuancuanhao/p/8280875.html