【神经网络】2. 神经网络设计过程
应用神经网络的基本过程
神经网络搭建和使用基本过程如下:
准备数据:采集大量“特征/标签”数据(使用神经网络之前需要准备的数据)
搭建网络:搭建神经网络结构
优化参数:训练网络获取最佳参数(反转)
应用网络:将网络保存为模型,输入新数据,输出分类或预测结果(前传)(神经网络已经搭建好了,可以应用了)
其中,对于神经网络的设计过程最关键的就是搭建网络和优化参数,后续对神经网络的设计过程将以这两步骤为主。
神经网络设计过程
鸢尾花的分类过程:
将特征 [花萼长、花萼宽、花瓣长、花瓣宽] 输入神经网络,输出每个种类的可能性大小(分类的百分比)
其中神经网络里的每个小球,就是神经元
1943年,英国心里学家麦卡洛克和数据加皮茨,给出了神经元的计算模型(MP模型)
去掉非线性函数,简化的MP模型如下:
因此,y=x*w+b,就是神经网络的传播形式,其中
x为输入:[花萼长、花萼宽、花瓣长、花瓣宽] 1x4的数据
y为输出:[狗尾草鸢尾、杂色鸢尾、佛吉尼亚鸢尾] 1x3的数据
w为权重:4x3的数据
b为偏置项
(1)搭建网络
首先:初始化随机生成w与b
w:
-0.8 | -0.34 | -1.4 |
0.6 | 1.3 | 0.25 |
0.5 | 1.45 | 0.9 |
0.65 | 0.7 | -1.2 |
b:
2.52 | -3.1 | 5.62 |
(2)优化参数
目前基本上已经搭建好了神经网络,后续开始通过“特征/标签”的数据开始训练网络
输入一组数据:
特征:[花萼长、花萼宽、花瓣长、花瓣宽]=[5.8,4.0,1.2,0.2],即x=[5.8,4.0,1.2,0.2]
标签:0 狗尾草鸢尾
将特征输入到建好的神经网络里,按照传播形式y=x*w+b,通过计算得到:y=[1.01,2.01,-0.66]
这个过程称为前向传播
从输出结果里y=[1.01,2.01,-0.66]来看,最大可能性是1 杂色鸢尾 而不是标签0 狗尾草鸢尾
原因就是最初的参数W和b是随机生成的,也就是说目前的结果是蒙的
损失函数(loss function):预测值(y)与标准答案(y_)的差距
损失函数可以定量判断W和b的优势,当损失函数输出最小时,参数W、b会出现最优值
常用的损失函数,均方误差:
目的:找到一组参数W和b,使得随时函数最小
梯度:函数对个参数求偏导后的向量
函数梯度下降方向就是函数减小的方向
梯度下降法(Gradient descent):沿损失函数梯度下降的方向,寻找损失函数的最小值,得到最优参数的方法
学习率(learning rate,lr):当学习率设置的过小时,收敛过程将变得十分缓慢,而当学习率设置过大时,梯度可能会在最小值附近来回震荡,甚至无法收敛。
反向传播:从前向后,逐层求损失函数对每层神经元参数的偏导数,迭代更新左右参数
eg:损失函数 ,
参数w随机初始化为5,学习率(超参数)为0.2,则
1次 w=5 5-0.2*(2*5+2)=2.6
2次 w=2.6 2.6-0.2*(2*2.6+2)=1.16
3次 w=1.16 1.16-0.2*(2*1.16+2)=0.296
4次 w=0.296
......依次进行反向传播,可以找到当w=-1时,损失函数最小,则w=-1就是参数最优值
(3)案例
在pycharm里输入如下代码(其中tensorflow版本为2.0以上)
初始设定w为0.5,学习率lr为0.2,迭代次数epoch为40,最后打印出损失函数的结果
import tensorflow as tfw = tf.Variable(tf.constant(5, dtype=tf.float32))
lr = 0.2
epoch = 40for epoch in range(epoch): # for epoch 定义顶层循环,表示对数据集循环epoch次,此例数据集数据仅有1个w,初始化时候constant赋值为5,循环100次迭代。with tf.GradientTape() as tape: # with结构到grads框起了梯度的计算过程。loss = tf.square(w + 1)grads = tape.gradient(loss, w) # .gradient函数告知谁对谁求导w.assign_sub(lr * grads) # .assign_sub 对变量做自减 即:w -= lr*grads 即 w = w - lr*gradsprint("After %s epoch,w is %f,loss is %f" % (epoch, w.numpy(), loss))# lr初始值:0.2 请自改学习率 0.001 0.999 看收敛过程
# 最终目的:找到 loss 最小 即 w = -1 的最优参数w
从20次左右可以看出w基本上接近-1,损失函数基本上为0
After 0 epoch,w is 2.600000,loss is 36.000000
After 1 epoch,w is 1.160000,loss is 12.959999
After 2 epoch,w is 0.296000,loss is 4.665599
After 3 epoch,w is -0.222400,loss is 1.679616
After 4 epoch,w is -0.533440,loss is 0.604662
After 5 epoch,w is -0.720064,loss is 0.217678
After 6 epoch,w is -0.832038,loss is 0.078364
After 7 epoch,w is -0.899223,loss is 0.028211
After 8 epoch,w is -0.939534,loss is 0.010156
After 9 epoch,w is -0.963720,loss is 0.003656
After 10 epoch,w is -0.978232,loss is 0.001316
After 11 epoch,w is -0.986939,loss is 0.000474
After 12 epoch,w is -0.992164,loss is 0.000171
After 13 epoch,w is -0.995298,loss is 0.000061
After 14 epoch,w is -0.997179,loss is 0.000022
After 15 epoch,w is -0.998307,loss is 0.000008
After 16 epoch,w is -0.998984,loss is 0.000003
After 17 epoch,w is -0.999391,loss is 0.000001
After 18 epoch,w is -0.999634,loss is 0.000000
After 19 epoch,w is -0.999781,loss is 0.000000
After 20 epoch,w is -0.999868,loss is 0.000000
After 21 epoch,w is -0.999921,loss is 0.000000
After 22 epoch,w is -0.999953,loss is 0.000000
After 23 epoch,w is -0.999972,loss is 0.000000
After 24 epoch,w is -0.999983,loss is 0.000000
After 25 epoch,w is -0.999990,loss is 0.000000
After 26 epoch,w is -0.999994,loss is 0.000000
After 27 epoch,w is -0.999996,loss is 0.000000
After 28 epoch,w is -0.999998,loss is 0.000000
After 29 epoch,w is -0.999999,loss is 0.000000
After 30 epoch,w is -0.999999,loss is 0.000000
After 31 epoch,w is -1.000000,loss is 0.000000
After 32 epoch,w is -1.000000,loss is 0.000000
After 33 epoch,w is -1.000000,loss is 0.000000
After 34 epoch,w is -1.000000,loss is 0.000000
After 35 epoch,w is -1.000000,loss is 0.000000
After 36 epoch,w is -1.000000,loss is 0.000000
After 37 epoch,w is -1.000000,loss is 0.000000
After 38 epoch,w is -1.000000,loss is 0.000000
After 39 epoch,w is -1.000000,loss is 0.000000
学习来源:人工智能实践:Tensorflow笔记
【神经网络】2. 神经网络设计过程相关推荐
- 神经网络中,设计loss function有哪些技巧?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:视学算法 神经网络中,设计loss function有哪 ...
- 如何绘制神经网络结构图,如何设计神经网络结构
如何用Tensorflow 快速搭建神经网络 在MNIST数据集上,搭建一个简单神经网络结构,一个包含ReLU单元的非线性化处理的两层神经网络. 在训练神经网络的时候,使用带指数衰减的学习率设置.使用 ...
- 如何设计神经网络结构图,神经网络设计与实现
如何用Tensorflow 快速搭建神经网络 在MNIST数据集上,搭建一个简单神经网络结构,一个包含ReLU单元的非线性化处理的两层神经网络. 在训练神经网络的时候,使用带指数衰减的学习率设置.使用 ...
- 神经网络结构设计,神经网络架构设计
什么是5A智能建筑 5A智能建筑:指通讯自动化(CA).楼宇自动化(BA).办公自动化(OA).消防自动化(FA)和保安自动化(SA)集于一体的智能化建筑. 5A智能建筑具体包括的系统有:计算机管理系 ...
- 图像的处理原理:CNN(卷积神经网络)的实现过程
了解一定的技术原理,对产品经理而言是有益处的.本文讲述的图像处理的基本思路,希望大家能够对当前图像处理技术有一定了解. 现在有个概念叫泛产品经理,这个概念本身是好的,核心说的是产品思维,但是在工作上我 ...
- 花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)
目录 0. 前言 1. 单层卷积网络 2. 各参数维度 3. CNN 前向传播反向传播 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 ...
- rbf神经网络自适应控制matlab仿真,机械系统RBF神经网络控制:设计、分析及Matlab仿真(英文)...
机械系统RBF神经网络控制:设计.分析及Matlab仿真(英文) 作者:刘金琨 著 出版时间:2013年 内容简介 <机械系统RBF神经网络控制:设计.分析及Matlab仿真(英文)>从M ...
- 神经网络前向传播过程,神经网络反向传播
正向传播反向传播是什么? 题主问的应该是神经网络中的问题.正向传播是指数据从X传入到神经网络,经过各个隐藏层得到最终损失的过程. 反向传播主要是针对神经网络优化的过程中进行,在L端计算总的损失函数,然 ...
- 神经网络 卷积神经网络_如何愚弄神经网络?
神经网络 卷积神经网络 Imagine you're in the year 2050 and you're on your way to work in a self-driving car (pr ...
- 用于分类的神经网络算法,神经网络算法通俗解释
神经网络是什么 神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型.这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的. 生物神经网络 ...
最新文章
- html怎么在图片上加文字_怎么把图片文字转换成word文档
- centos 安装openoffice (办公软件 WPS)
- android 录像 源代码,android安卓视频录制摄像拍摄源码(测试可用)
- [算法练习] 把字符串转换成整数
- python3扬州大学校园网认证登录与下线
- 无痛学习ISAC(三)
- 关注点分离(Separation of concerns, SoC)
- Latex中的括号用法总结
- 数列极限导出重要无理数
- 剑客之剑系列续篇:六脉神剑——PyCharm使用宝典
- 计算机汉字录入试题,上机试题:汉字录入题.doc.doc
- 15ubuntu20.04离线安装openssh8.9.p1
- Android系统篇之—-Android中的run-as命令引出升降权限的安全问题(Linux中的setuid和setgid)
- graylog+kafka+zookeeper(单机测试及源码),graylog收集kafka(脚本创建发布订阅方式)存储的消息(四)
- 香港主机CDN加速,让您的网站速度飙升
- vue----前端精选50道面试题---一个小白的孤芳自赏
- 信息系统项目管理:项目经理担任什么样的角色?
- BUU LFI COURSE 1 WP
- 【NOIP模拟】德拉曼兹路基
- 通告功能、公告、消息(站内短信)、通告 (建表思路与功用)
热门文章
- 华为虚拟专网客户端SecoClient报错“接受返回码超时”故障
- 基于javaweb的物资配送管理系统_基于JAVA的物流配送管理系统毕业设计书
- 580刷590bios_AMD rx470/480/570/580/590高端技术公版/非公强刷BIOS教程教学-没差老师出品...
- 计算机保研面试题总汇(网上搜集的题 自己写的答案)
- python+java家庭理财个人理财管理系统记账系统
- php留言板的实验步骤,php留言板实训报告.docx
- (四)BP神经网络预测(上)
- linux用dd命令刻录u盘,巧用linux dd命令刻录启动U盘
- python中模运算_Python中的模运算
- macOS分辨率修改器哪个好用?