• 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],另外两行类似 
  • 相关阅读:
    关于ios7的适配问题
    iOS安全攻防(十八):数据保护API
    【Objective-C】OC中KVO的基本概念和使用方法
    pytest运行方式
    unittest中使用ddt做数据驱动
    unittest使用HtmlTestRunner显示报告
    unittest中的断言内容
    unittest指定跳过某些方法
    unittest运行时指定运行顺序
    xpath使用属性元素定位,包含 and 、or、not
  • 原文地址:https://www.cnblogs.com/cuancuancuanhao/p/8280875.html
Copyright © 2020-2023  润新知