zoukankan      html  css  js  c++  java
  • 神经网络 Joyce

    学习链接:

    http://www.cnblogs.com/heaad/archive/2011/03/07/1976443.html

     上文(链接)中已经将神经网络的基本原理总结详尽,本文主要描述常见的神经网络模型。

    artificial neuron, threshold, bias, active function/transfer function, net activation, M-P model, processing element

    一、先来段预热,把工具摆摆

    1、Active Function/Transfer Function及其matlab函数

    (1)liner function:

    Linear transfer function>purelin()

    >> n=[1:0.2:2];
    >> a=purelin(n)
    a =
        1.0000    1.2000    1.4000    1.6000    1.8000    2.0000

    (2)ramp function:

    (3)threshold function: 

    (4)sigmoid function:

    Logarithmic sigmoid transfer function>logsig()

    (5)derived function of sigmoid function:

    (6)bipolar sigmoid function:

    Hyperbolic tangent sigmoid transfer function>tansig()

    (7)derived function of bipolar sigmoid function:

    2、matlab数据归一化处理函数

    链接文中所提premnmx,postmnmx,trmnmx三函数在matlab version R2005b NNET 4.0.6后被废除,取而代之以mapminmax系列函数:

    [Y,PS] = mapminmax(X,YMIN,YMAX)
    [Y,PS] = mapminmax(X,FP)
    Y = mapminmax('apply',X,PS)
    X = mapminmax('reverse',Y,PS)
    dy_dx = mapminmax('dy_dx',X,Y,PS)
    dx_dy = mapminmax('dx_dy',X,Y,PS)

    例:

    (1)[Y,PS] = mapminmax(X,YMIN,YMAX)设置YMIN,YMAX

    >> x = [1:5;6:10];
    >> [y,ps] = mapminmax(x)
    
    y =
       -1.0000   -0.5000         0    0.5000    1.0000
       -1.0000   -0.5000         0    0.5000    1.0000
    
    ps = 
             name: 'mapminmax'
            xrows: 2
             xmax: [2x1 double]
             xmin: [2x1 double]
           xrange: [2x1 double]
            yrows: 2
             ymax: 1
             ymin: -1
           yrange: 2
        no_change: 0
    
    >> ps.ymin=0;
    >> [y,ps] = mapminmax(x,ps)
    y =
             0    0.2500    0.5000    0.7500    1.0000
             0    0.2500    0.5000    0.7500    1.0000
    
    ps = 
             name: 'mapminmax'
            xrows: 2
             xmax: [2x1 double]
             xmin: [2x1 double]
           xrange: [2x1 double]
            yrows: 2
             ymax: 1
             ymin: 0
           yrange: 1
        no_change: 0

    (2)[Y,PS] = mapminmax(X,FP)

    >> x2=[1,2,4;5,3,9;2,4,8;0,1,3];
    >> FP.ymin=0;
    >> FP.ymax=2;
    >> [y,PS]=mapminmax(x2,FP)
    
    y =
    
             0    0.6667    2.0000
        0.6667         0    2.0000
             0    0.6667    2.0000
             0    0.6667    2.0000
    
    PS = 
    
             name: 'mapminmax'
            xrows: 4
             xmax: [4x1 double]
             xmin: [4x1 double]
           xrange: [4x1 double]
            yrows: 4
             ymax: 2
             ymin: 0
           yrange: 2
        no_change: 0

    (3)Y = mapminmax('apply',X,PS)

    对x1采取某种规范化方式后要对x2采取同样规范化样式
    
    >> x1=[1:3;4:6];
    >> x2=[1:2:5;3:2:7];
    >> [y,ps]=mapminmax(x1)
    
    y =
        -1     0     1
        -1     0     1
    
    ps = 
             name: 'mapminmax'
            xrows: 2
             xmax: [2x1 double]
             xmin: [2x1 double]
           xrange: [2x1 double]
            yrows: 2
             ymax: 1
             ymin: -1
           yrange: 2
        no_change: 0
    
    >> yy=mapminmax('apply',x2,ps)
    
    yy =
        -1     1     3
        -2     0     2

    (4)X = mapminmax('reverse',Y,PS)

    反归一化函数
    >> x=[1:5;6:10];
    >> [y,ps]=mapminmax(x);
    >> xt=mapminmax('reverse',y,ps)
    
    xt =
         1     2     3     4     5
         6     7     8     9    10

    3、使用matlab实现神经网络常用函数

    (1)前馈神经网络建立函数

    链接文中所提newff()函数在matlab version R2010b NNET 7.0中弃用,以feedforwardnet()取代。

    语法:feedforwardnet(hiddenSizes,trainFcn)

    ()训练函数

    ()

    二、三类神经网络具体模型

    1、前馈神经网络(feed-forward neural network)

    (1)BP (backpropagation) network(反向传播神经网络)

            BP神经网络是一种多层前馈神经网络,主要特点为“信号前向传递,误差反向传播”。训练步骤如下:

    step1

    根据输入输出序列(X,Y),确定各层节点数——输入层n、隐含层l、输出层m(n==每个输入的维数,m==区分的样本种类数,隐藏层的层数和每层的神经元个数目前尚未有理论指导);

    初始化输入层/隐含层连接权值wij、隐含层/输出层wjk;

    初始化隐含层阈值(偏置)a,输出层阈值b;

    初始化学习速度、激励函数。

    step2

    计算隐含层输出值H

    step3

    计算输出层输出值

    step4

    计算误差

    step5

    权值更新

    step6

    阈值更新

    step7

    判断算法是否结束,若没有,返回step2

    (2)perceptron(感知机)

  • 相关阅读:
    archlinux .bash_history
    Ubuntu环境下挂载新硬盘
    软碟通 UltraISO U启替代品 Win32DiskImager 无设备 无盘符 无u盘 无优盘 解决方案 之diskpart
    delphi Integer overflow
    MSBuild Tools offline
    delphi synedit免费的拼写检查器dll
    git 自定义命令行
    lua编译
    gcc ar
    Windows Subsystem for Linux (WSL)挂载移动硬盘U盘 卸载 c d 盘
  • 原文地址:https://www.cnblogs.com/joycelee/p/2827153.html
Copyright © 2011-2022 走看看