第1讲 神经网络计算
🖼 人工智能学习总目录
🖼 视频资料都在这里—北京大学TensorFlow2.0公开课,建议看课,这里只是我写的可参考的在线笔记
🖼 主要学会用TensorFlow2搭建神经网络方法、离散数据的分类、连续数据的预测
第1讲 神经网络计算,搭建出我们的第一个神经网络模型
第2讲 神经网络优化,掌握学习率、激活函数、损失函数和正则化的使用,五种反向传播优化器
第3讲 神经网络八股,用“六部分”写出手写数字模型识别训练模型
第4讲 网络八股扩展,增加自制数据集、数据增强,断点续训参数提取和acc/loss可视化,实现给图识物的应用程序
第5讲 卷积神经网络,用基础CNN、LeNet、AlexNet、VGGNet、InceptionNet、ResNet实现图像识别
第6讲 循环神经网络,用基础RNN、LSTM、GRU实现股票预测
本讲目标:了解神经网络计算过程,搭建出第一个神经网络模型。
环境:Anaconda (tersorflow虚拟环境)、Pycharm,可以看这里之前写过:Anaconda界面创建虚拟环境
1 | # 1、创建tensorflow虚拟环境,这里没有设置python版本,会根据自己电脑下载(我觉得区别不大) |
人工智能:让机器人具备人的思维和意识
Tensor张量:多维数组(列表),张量可以表示0~n阶数组(列表)
维数 阶 名字 例子 0-D 0 标量 scalar s = 1 1-D 1 向量 vector v = [ 1 , 2 , 3 ] 2-D 2 矩阵 matrix m = [ [1,2] , [3,4] ] n-D n 张量 tensor t = [[[ …
1、人工智能三学派
- 1、行为主义:基于控制论(构建感知—动作控制系统)
- 2、符号主义: 基于算术逻辑表达式(公式描述,专家系统)
- 3、连接主义:基于仿生学,模拟神经元链接(感性思维、神经网络)
我们做的主要是用计算机仿出神经连接关系(准备数据—>搭建网络—>参数优化—>应用网络)
2、神经网络设计过程
首先,需要准备数据,数据量越大越好,要构成特征和标签对。如要识别猫,就要有大量猫的图片和这个图片是猫的标签,构成特征标签对。
随后,搭建神经网络的网络结构,并通过反向传播,优化连线的权重,直到模型的识别准确率达到要求,得到最优的连线权重,把这个模型保存起来。
- 最后,用保存的模型,输入从未见过的新数据,它会通过前向传播,输出概率值,概率值最大的一个,就是分类或预测的结果。图 2.1 展示了搭建与使用神经网络模型的流程。
2.1 鸢尾花Iris数据集
输入特征:(花萼长,花萼宽,花瓣长,花瓣宽)
输出标签: 0/1/2 , 0是狗尾草鸢尾花、1是杂色鸢尾花、2是弗吉尼亚鸢尾花
(花萼长,花萼宽,花瓣长,花瓣宽,对应类别) ——> (前四个是输入特征,最后一个是标签)
2.2 网络结构
y = x * w + b,输入一个数据x,乘自己的权值w,加上偏执b,输出y
y = y0+y1+y2+y3 , y0计算方式在上面,结果如下图有y0/y1/y2,分别对应类别0/1/2鸢尾花类型的概率
权值w和偏执b随机初始化(类似下图,4个属性x3种类型,1偏执x3种类型) —> 定量判断w、b的优劣(损失函数loss判断预测值y和标准答案y_的差距) —> 反向传播,从后向前逐层求偏导迭代参数(梯度下降法找w、b最小的值)
2.3 损失函数(loss function)
预测值(y)与标准答案(y_)的差距,一般用的是均值方差MSE(y,y_)= (y-y_)^2 /n (这里计算所有的y-y_)
2.4 梯度下降(找w、b使loss function最小)
梯度:各参数求导后的向量
梯度下降:函数减少的方向
梯度下降法:沿损失函数梯度下降的方法,寻找损失函数的最小值,得到最优参数的方法(下面公式要记住)
2.5 学习率(learning rate,lr)
简单理解成寻找损失函数最小值过程中,w、b变换的速度
学习率小,迭代过程中趋于最小值速度慢,需要多次迭代
学习率大,迭代过程中可能直接跨过最小值,找不到最优最小值点
2.6 反向传播
从后向前,逐层求偏导,迭代参数
2.7 代码示例
1 | import tensorflow as tf |
3、TensorFlow2.1基本概念与常见函数
1 | import tensorflow as tf |
4、鸢尾花数据集
4.1 加载鸢尾花数据集
1 | # 这里下载的是包的命令是conda install scikit-learn,不是sklearn包 |
4.2 实现鸢尾花分类
下面这段代码很重要,希望你可以背下来
1、准备数据
- 数据集读入
- 数据集乱序
- 生成训练集和测试集(x_train、y_train和x_test、y_test)
- 配对(输入特征,标签),每次读入一小撮(batch)
2、搭建神经网络
- 定义神经网络中所有可训练的参数
3、参数优化
- 嵌套循环迭代,with结构更新参数,显示当前loss
4、测试效果
- 计算当前参数前行传播后的准确率,显示当前acc
5、acc/loss可视化
1 | # 利用鸢尾花数据集,实现前向传播、反向传播,可视化loss曲线 |