DAY24神经网路(续二)

昨天介绍完单层感知机模型程序,今天要来研究浅层神经网路:
单层感知机模型是只有一个输入层和输出层,如果用来做简单多元线性回归效果还可以,但是一旦今天是复杂的非线性预测,或是多元分类问题,
单层感知机模型可能就无法解决-->所以我们可能要增加神经网路的层数,今天要来实做就是BP(反向传播)神经网路,他是由一个输入层,一个输出层和多个隐藏层所组成,结构如下:
https://ithelp.ithome.com.tw/upload/images/20211008/20141654l3uquf3xjU.png

今天用的BF,我打算使用三层网路(一层输入层,一层输出层,一层隐藏层)
-->先不要用太多隐藏层(除非可能结果很差)

而BF神经网路概念是:资料先经过输入-->隐藏-->输出(正向传播),在经由估计值和实际值误差-->回传给隐藏层并将误差分散给各层神经元,这样就可以获得各个神经元误差-->就可以修正神经元权重,持续不断调整,直到估计值和实际值误差小於一个值或达到最大迭带上限

所以演算法如下:
https://ithelp.ithome.com.tw/upload/images/20211008/20141654zUxh5W1DJk.png
(资料来源:维基百科)

基本上,和这个一样:
https://ithelp.ithome.com.tw/upload/images/20211008/20141654Yxy9qdN7xj.png
只是多了一个f作为隐藏层的输出,接下来依照误差公式:
https://ithelp.ithome.com.tw/upload/images/20211008/20141654rBweDYVN7I.png
我们可以对权重去做偏微:
https://ithelp.ithome.com.tw/upload/images/20211008/201416545MhNlnZQic.png
所以到最後权重变化会变成:
https://ithelp.ithome.com.tw/upload/images/20211008/20141654gYQs31sQh1.jpg
(详细过程可以参考这篇:https://zh.wikipedia.org/wiki/反向传播算法)
至於关於神经元个数,这边采用这个经验公式:
https://ithelp.ithome.com.tw/upload/images/20211008/20141654wT6ed0wYfz.jpg
所以知道这个後,明天开始实际来操作时,会找实际的启动函数来作为例子
依样先汇入资料,就用昨天的资料并做分割,程序如下:

data=pd.DataFrame([[7,560,5.1,16.68],
				   [3,220,4.9,11.50],
				   	[4,80,4.6,14.88],
				   	[7,330,6.7,18.11],
				   	[16,688,5.2,40.33],
				   	[4,225,5.5,13.50],
				   	[3,340,4.7,12.03],
				   	[10,776,5.1,29.00],
				   	[5,605,6.3,21.50],
				   	[6,150,5,13.75]
				   	],columns=['x1','x2','x3','y'])
print(data)
x=data.loc[:,['x1','x2','x3']]
y=data['y']

#个别标准化处理
x['x1']=(x['x1']-np.mean(x['x1']))/np.std(x['x1'])
x['x2']=(x['x2']-np.mean(x['x2']))/np.std(x['x2'])
x['x3']=(x['x3']-np.mean(x['x3']))/np.std(x['x3'])

print(x)


#新增截距项系数1
x['b0']=1
print(x)

#取前6笔当train
x_train=x.loc[:5]
#取後4笔当test
x_test=x.loc[6:]
print(x_train)
print(x_test)

y_train=y.loc[:5]
y_test=y.loc[6:]

print(y_train)
print(y_test)

好,今天浅层网路神经演算法算是完成,明天就来研究浅层网路神经程序

三个人看着墙上文字,瞬间沉思了起来,之後又互相看来看去,却像是谁都不知道这是甚麽意思,这时众人突然感觉空气开始变冷,墙壁角落开始有冰出现而且慢慢的往三人方向延伸,形成包围之势,眼看情势不对,男子立刻从手中伸出团火焰想阻止冰扩散,而这时娃娃像是领悟到甚麽,突然升起双手把两人弹飞到冰上,狐狸一脸惊讶看着娃娃,而男子一脸愤怒看着娃娃,而下一瞬间两人都被冰冻了起来,一动也不动,同时冰停止蔓延,并且墙壁开始碎裂,最终冰和墙壁还有木棉花都消散在空气中,只留下娃娃和被冻住狐狸和男子
           --|未来是孤独,只留我一人追寻|--  MC.SM

<<:  Android学习笔记29

>>:  Day 23 - Keyboard Row

初探 Domain driven design

Domain Driven Design 是一个最近开始在台湾红起来的一种设计以及开发方式,他的出现...

Dynamic Time Warping (DTW)

DTW 是什麽 当要计算时间序列资料的相似程度时,我们可以使用不同的距离计算方式。DTW就是其中一种...

[JS] You Don't Know JavaScript [this & Object Prototypes] - this All Makes Sense Now! [上]

前言 在this Or That?中提到了许多对於this的误解,并且也对於这些误解做了一些解释,我...

有空再说与 TODO

前言 今天来跟大家聊聊一个轻松的话题,与先前我们提过关於时间的主题有点关系,就是当我们听到「有空再说...

[Day 15] 在Arduino IDE中用Arm CMSIS 牛刀小试一下

在[Day 14] tinyML开发框架(二):Arm CMSIS 简介已初步帮大家介绍了Arm C...