2020-09-05 基于一个简单神经网路的matlab仿真

背景:最近看到一个国外小哥用python写的介绍神经网络帖子。写的很详细,也很清楚。本文就不再累述,那怎么用matlab来实现他呢。其实很简单。tips:此小哥博客为https://victorzhou.com/blog/intro-to-neural-networks/本文有部分图来源于此,侵权删。基本步骤:1.选择合适的神经网络下图就是一个简单的BP(back propagation)神经网络。由于我们希望由人的身高和体重来判断此人的性别,所以此神经网络被设计为2个输入层(身高/
摘要由CSDN通过智能技术生成

背景:

最近看到一个国外小哥用python写的介绍神经网络帖子。写的很详细,也很清楚。本文就不再累述,那怎么用matlab来实现他呢。其实很简单。

tips:此小哥博客为https://victorzhou.com/blog/intro-to-neural-networks/

本文有部分图来源于此,侵权删。

基本步骤:

1.选择合适的神经网络

下图就是一个简单的BP(back propagation)神经网络。由于我们希望由人的身高和体重来判断此人的性别,所以此神经网络被设计为2个输入层(身高/体重)、几层隐含层、1个输出层(性别)。不同的layer之间的神经元互相连接,连接方式为线性加权。此处隐藏层神经元数目被设计成2个,是因为训练样本数为4。一般的,对于这种神经网络,隐藏节点数的选择需要满足两个条件:

a.需要小于N-1(N为样本数)。

b.训练样本数需要多于网络模型的连接权数。一般是2-10倍。

事实上,只要隐层神经元数目足够多,该网络就能以任意精度逼近一个非线性函数。而神经元数目太少会造成网络的不适性,而神经元数目太多又会引起网络的过适性。同时,这种神经网络具有把外界刺激和输入信息进行联想记忆的能力。这是因为它采用了分布并行的信息处理方式,对信息的提取必须采用联想的方式,才能将相关神经元全部调动起来。

2.确定激活函数

激活函数的作用是将无限制的输入转换为可预测形式的输出。我们在此调用的激活函数是:

f(x) = 1 / (1 + exp(-x))

其在笛卡尔坐标系内的图形如下图所示:

使用python中的数学工具Numpy调用的函数名为sigmoid(x),在Matlab中,则是调用的logsig(x)函数。从函数的图形可以看出,通过此激活函数,不论x输入时多少,输出都被限制在(0,1)之间。和激活函数tanh类似(-1,1),这两种激活函数适合做概率值的处理,例如LSTM中的各种门;而ReLU就不行,因为ReLU无最大值限制,可能会出现很大值。

3.定义评价函数

在训练神经网络之前,我们需要有一个标准定义它到底好不好,以便我们进行改进,这就是损失(loss&#

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值