*05 ***** 例子:前馈
我们继续用前面图中的网络,假设每个神经元的权重都是 ,截距项也相同
,激活函数也都是S型函数。分别用
,
表示相应的神经元的输出。
当输入时,会得到什么结果?
这个神经网络对输入的输出是0.7216,很简单。
一个神经网络的层数以及每一层中的神经元数量都是任意的。基本逻辑都一样:输入在神经网络中向前传输,最终得到输出。接下来,我们会继续使用前面的这个网络。
***06 ***编码神经网络:前馈
接下来我们实现这个神经网络的前馈机制,还是这个图:
import numpy as np
# ... code from previous section here
classOurNeuralNetwork:
'''
A neural network with:
- 2 inputs
- a hidden layer with 2 neurons (h1, h2)
- an output layer with 1 neuron (o1)
Each neuron has the same weights and bias:
- w = [0, 1]
- b = 0
'''
def__init__(self):
weights = np.array([0, 1])
bias = 0
# 这里是来自前一节的神经元类
self.h1 = Neuron(weights, bias)
self.h2 = Neuron(weights, bias)
self.o1 = Neuron(weights, bias)
deffeedforward(self, x):
out_h1 = self.h1.feedforward(x)
out_h2 = self.h2.feedforward(x)
# o1的输入是h1和h2的输出
out_o1 = self.o1.feedforward(np.array([out_h1, out_h2]))
return out_o1
network = OurNeuralNetwork()
x = np.array([2, 3])
print(network.feedforward(x)) # 0.7216325609518421
结果正确,看上去没问题。
***07 ***训练神经网络 第一部分
现在有这样的数据:
接下来我们用这个数据来训练神经网络的权重和截距项,从而可以根据身高体重预测性别:
我们用0和1分别表示男性(M)和女性(F),并对数值做了转化:
我这里是随意选取了135和66来标准化数据,通常会使用平均值。
***08 ***损失
在训练网络之前,我们需要量化当前的网络是『好』还是『坏』,从而可以寻找更好的网络。这就是定义损失的目的。
我们在这里用平均方差(MSE)损失: ,让我们仔细看看:
是样品数,这里等于4(Alice、Bob、Charlie和Diana)。
表示要预测的变量,这里是性别。
是变量的真实值(『正确答案』)。例如,Alice的
就是1(男性)。
变量的预测值。这就是我们网络的输出。
被称为方差(squared error)。我们的损失函数就是所有方差的平均值。预测效果越好,损失就越少。
更好的预测 = 更少的损失!
训练网络 = 最小化它的损失。
*09 ***** 损失计算例子
假设我们的网络总是输出0,换言之就是认为所有人都是男性。损失如何?
***10 ***代码:MSE损失
下面是计算MSE损失的代码:
import numpy as np
defmse_loss(y_true, y_pred):
# y_true and y_pred are numpy arrays of the same length.
return ((y_true - y_pred) ** 2).mean()
y_true = np.array([1, 0, 0, 1])
y_pred = np.array([0, 0, 0, 0])
print(mse_loss(y_true, y_pred)) # 0.5
如果你不理解这段代码,可以看看NumPy的快速入门中关于数组的操作。
好的,继续。
-
神经网络
+关注
关注
42文章
4785浏览量
101276 -
神经元
+关注
关注
1文章
368浏览量
18526 -
python
+关注
关注
56文章
4811浏览量
85102
发布评论请先 登录
相关推荐
labview BP神经网络的实现
【PYNQ-Z2试用体验】神经网络基础知识
卷积神经网络如何使用
【案例分享】ART神经网络与SOM神经网络
人工神经网络实现方法有哪些?
如何构建神经网络?
基于BP神经网络的PID控制
卷积神经网络一维卷积的处理过程
用Python从头实现一个神经网络来理解神经网络的原理1
![<b class='flag-5'>用</b><b class='flag-5'>Python</b><b class='flag-5'>从头</b><b class='flag-5'>实现</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>神经网络</b><b class='flag-5'>来</b><b class='flag-5'>理解</b><b class='flag-5'>神经网络</b>的原理1](https://file.elecfans.com/web2/M00/94/19/poYBAGP8U3-AVvxXAABenxhBbGM619.jpg)
用Python从头实现一个神经网络来理解神经网络的原理3
![<b class='flag-5'>用</b><b class='flag-5'>Python</b><b class='flag-5'>从头</b><b class='flag-5'>实现</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>神经网络</b><b class='flag-5'>来</b><b class='flag-5'>理解</b><b class='flag-5'>神经网络</b>的原理3](https://file.elecfans.com/web2/M00/94/1A/poYBAGP8U3-AZU0mAAAIVtrMUhQ981.jpg)
用Python从头实现一个神经网络来理解神经网络的原理4
![<b class='flag-5'>用</b><b class='flag-5'>Python</b><b class='flag-5'>从头</b><b class='flag-5'>实现</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>神经网络</b><b class='flag-5'>来</b><b class='flag-5'>理解</b><b class='flag-5'>神经网络</b>的原理4](https://file.elecfans.com/web2/M00/94/9C/pYYBAGP8U3-AQE5dAAAM2u2p9qs820.jpg)
评论