# 神经网络算法
# 6.1 神经网络算法基础
神经网络算法在识别图像和语音、识别手写、解理文本、图像分割、对话系统、自动驾驶等领域不断打破记录。神经网络算法是一种简单易实现的、很重要的机器学习算法。
神经网络算法的概念已出现几十年,但是它仅仅在最近由于计算能力(计算处理、算法效率和数据集大小) 的提升能训练大规模网络才获得新的发展。
神经网络算法是对输入数据矩阵进行一系列的基本操作。这些操作通常包括非线性函数的加法和乘法。逻辑回归算法是斜率与特征点积求和后进行非线性sigmoid函数计算。神经网络算法表达形式更通用,允许任意形式的基本操作和非线性函数的结合,包括绝对值、最大值、最小值等。
神经网络算法的一个重要的"黑科技"是"反向传播"。反向传播是一种基于学习率和损失函数返回值来更新模型变量的过程。
神经网络算法另外一个重要的特性是非线性激励函数。因为大部分神经网络算法仅仅是加法操作和乘法操作的结合,所以它们不能进行非线性数据样本集的模型训练。为了解决该问题,我们在神经网络算法中使用非线性激励函数,这将使得神经网络算法能够解决大部分非线性的问题。
记住,如前面见过的大部分算法,神经网络算法对所选择的超参数是敏感的。我们将看到不同的学习率、损失函数和优化对模型训练的影响。
>>> 学习资料
>>> * 用程序的方式介绍神经网络算法 https://karpathy.github.io/neuralnets/
>>> * 深度学习笔记 https://randomekek.github.io/deep/deeplearning.html
# 6.2 使用TensorFlow实现门函数
## 1. 加载TensorFlow模块,创建一个计算图会话
## 2. 声明模型变量、输入数据集和占位符。本例输入数据为5,所以乘法因为为10,可以得到50的预期值(5*10=10)
## 3. 增加操作到计算图中
## 4. 声明损失函数:输出结果与预期目标值(50)之间的L2距离函数
## 5. 初始化模型变量,声明标准梯度下降优化算法
## 6. 优化模型输出结果。连续输入值5, 反向传播损失函数来更新模型变量以达到值10
## 7. 输出结果如下
## 8. 对两个嵌套操作的例子f(x) = a*x+b, 也执行上述相同的步骤
## 9. 开始第二个例子,不同在于本例中包含两个模型变量: a和b
## 10. 优化模型变量,训练输出结果,以达到预期目标值50
## 11. 输出结果如下
# 6.3 使用门函数和激励函数
## 1. 导入必要的编程库,初始化一个计算图会话。对于学习在TensorFlow中如何设置随机种子而言,这也是一个很好的例子。这里将使用TensorFlow和Numpy模块和随机数生成器。对于相同的随机种子集,我们应该能够复现
## 2. 声明批量大小、模型变量、数据集和占位符。在计算图中为两个相似的神经网络模型(仅激励函数不同)传入正态分布数据
## 3. 声明两个训练模型,即sigmoid激励模型和ReLU激励模型
## 4. 损失函数都采用模型输出和预期值0.75之间的差值的L2范数平均
## 5. 声明优化算法
## 6. 遍历迭代训练模型,每个模型迭代750次。保存损失函数输出和激励函数的返回值,以便后续绘图
## 7. 下面是绘制损失函数和激励函数的代码
* 激励函数比较
激励函数|优点|缺点
-------|----|----
Sigmoid激励函数|输出的极值很少|收敛太慢
ReLU激励函数|快速收敛|返回结果中容易出现极值
# 6.4 用TensorFlow实现单层神经网络
## 1. 创建计算图会话,导入必要的编程库
## 2. 加载Iris数据集,存储花萼长度作为目标值,然后开始一个计算图会话
## 3. 因为数据集比较小,我们设置一个种子使得返回结果可复现
## 4. 为了准备数据集,我们创建一个80-20分的训练集和测试集。通过min-max缩放法正则化特征值为0到1之间
## 5. 现在为数据集和目标值声明批量大小和占位符
## 6. 这一步相当重要,声明有合适形状的模型变量。我们能声明隐藏层为任意大小,本例中设置为有五个隐藏节点
## 7. 分两步声明训练模型: 第一步,创建一个隐藏层输出;第二步,创建训练模型的最后输出
## 8. 这里定义均方误差为损失函数
## 9. 声明优化算法,初始化模型变量
## 10. 遍历迭代训练模型。我们也初始化两个列表(list)存储训练损失和测试损失。在每次迭代训练时,随机选择批量训练数据来拟合模型
## 11. 使用matplotlib绘制损失函数
# 6.5 用TensorFlow实现神经网络常见层
## 1. 导入需要的编程库,创建计算图会话
## 2. 初始化数据,该数据为NumPy数组,长度为25。创建传入数据的占位符
## 3. 定义一个卷积层的函数。接着声明一个随机过滤层,创建一个卷积层
## 4. TensorFlow的激励函数默认是逐个元素进行操作。这意味着,在部分层中使用激励函数。下面创建一个激励函数并初始化
## 5. 声明一个池化层函数,该函数在一维向量的移动窗口上创建池化层函数。对于本例,其宽度为5
## 6. 最后一层连接的是全连接层。创建一个函数,该函数输入一维数据,输出值的索引。记住一维数组做矩阵乘法需要提前扩展为二维
## 7. 初始化所有的变量,运行计算图打印出每层的输出结果
## 8. 输出结果如下
# 6.6 用TensorFlow实现多层神经网络
## 1. 导入必要的编程库
## 2. 使用requests模块从网站加载数据集,然后分离出需要的特征数据和目标值
## 3. 为了后面可以复现,为NumPy和TensorFlow设置随机种子,然后声明批量大小
## 4. 分割数据集为80-20的训练集和测试集,然后使用min-max方法归一化输入特征数据为0到1之间
## 5. 因为有多个层含有相似的变量初始化,因此我们将创建一个初始化函数,该函数可以初始化加权权重和偏置
## 6. 初始化占位符。本例中将有八个输入特征数据和一个输出结果(出生体重,单位:克)
## 7. 全连接层将在三个隐藏层中使用三次,为了避免代码上的重复,我们将创建一个层函数来初始化算法模型
## 8. 现在创建算法模型。对于每一层(包括输出层),我们将初始化一个权重矩阵、偏置矩阵和全连接层。在本例中,三个隐藏层的大小分别为25、10和3
## 9. 使用L1范数损失函数(绝对值), 声明优化器(Adam优化器)和初始化变量
## 10. 迭代训练模型200次。下面的代码也包括存储训练损失和测试损失,选择随机批量大小和每25次迭代就打印状态
## 11. 输出结果如下
## 12. 使用matplotlib模块绘制训练损失和测试损失代码
## 13. 现在我们想比较预测出体重结果和前面的逻辑结果。逻辑回归算法中,我们在迭代上千次后得到了大约60%的精确度。为了在这里做比较,我们将输出训练集/测试集和回归结果,然后传入一个指示函数(判断是否大于2500克),将回归结果转换成分类结果
## 14. 准确度的结果如下
# 6.7 线性预测模型的优化
## 1. 导入必要的编程库,初始化计算图会话
## 2. 加载低出生体重数据集,并对其进行抽取和归一化。有一点不同的是,本例中将使用低出生体重指示变量作为目标值,而不是实际出生体重
## 3. 声明批量大小和占位符
## 4. 我们声明函数来初始化算法模型中的变量和层。为了创建一个更好的逻辑层,我们需要创建一个返回输入层的逻辑层的函数。换句话说,我们需要使用全连接 层,返回每层的值。注意,损失函数包括最终的sigmoid函数,所以我们指定最后一层不必返回输出的sigmoid值
## 5.
没有合适的资源?快使用搜索试试~ 我知道了~
TensorFlow机器学习实战指南.zip
共105个文件
py:87个
md:12个
pos:1个
需积分: 5 0 下载量 101 浏览量
2024-04-23
14:23:44
上传
评论
收藏 10.3MB ZIP 举报
温馨提示
TensorFlow机器学习实战指南
资源推荐
资源详情
资源评论
收起资源包目录
TensorFlow机器学习实战指南.zip (105个子文件)
temp_spam_data.csv 474KB
.gitignore 1KB
train-images-idx3-ubyte.gz 9.45MB
LICENSE 1KB
README.md 12KB
README.md 9KB
README.md 7KB
README.md 7KB
README.md 6KB
README.md 5KB
README.md 4KB
README.md 537B
READEME.md 27B
README.md 22B
README.md 21B
README.md 20B
rt-polarity.neg 598KB
rt-polarity.pos 611KB
demo_7.7.py 13KB
demo_8.3.py 13KB
demo_6.5.py 11KB
demo_9.3.py 11KB
demo_9.4.py 10KB
demo_9.6.py 10KB
demo_7.4.py 10KB
demo_9.5.py 10KB
demo_6.8.py 9KB
demo_8.5.py 8KB
demo_9.2.py 8KB
demo_8.2.py 8KB
demo_8.6.py 8KB
demo_7.2.py 8KB
demo_6.6.py 7KB
demo_7.6.py 6KB
demo_7.5.py 6KB
demo_7.3.py 6KB
demo_10.2.py 6KB
demo_4.6.py 6KB
text_helpers.py 6KB
demo_6.7.py 6KB
demo_2.9.py 6KB
demo_4.4.py 5KB
demo_8.4.py 5KB
demo_11.5.py 5KB
demo_4.2.py 5KB
demo_5.4.py 5KB
demo_5.5.py 5KB
demo_11.2.py 4KB
demo_11.4.py 4KB
demo_4.5.py 4KB
demo_4.3.py 4KB
demo_3.9.py 4KB
demo_5.2.py 4KB
demo_5.3.py 4KB
demo_6.4.py 4KB
demo_5.6.py 4KB
demo_2.6.py 4KB
demo_10.6.py 4KB
demo_10.5.py 4KB
demo_2.5.py 3KB
demo_6.2.py 3KB
demo_2.8.py 3KB
demo_3.4.py 3KB
demo_6.3.py 3KB
demo_3.7.py 3KB
demo_10.3.py 3KB
demo_3.6.py 3KB
demo_1.5.py 3KB
demo_3.7.4.py 3KB
demo_3.8.py 3KB
demo_2.7.py 2KB
demo_3.5.py 2KB
demo_1.3.py 2KB
demo_1.7.py 2KB
demo_2.4.py 2KB
demo_10.4.py 2KB
demo_11.6.py 2KB
demo_3.3.py 2KB
demo_3.2.py 1KB
demo_1.8.2.6.py 1KB
demo_1.2.py 1KB
demo_2.3.py 939B
demo_1.6.py 835B
demo_1.8.2.9.py 788B
demo_1.8.2.5.py 769B
demo_1.4.py 710B
demo_11.3.py 709B
__init__.py 637B
__init__.py 637B
__init__.py 636B
__init__.py 636B
__init__.py 636B
__init__.py 636B
__init__.py 635B
__init__.py 635B
__init__.py 635B
__init__.py 635B
demo_1.8.2.3.py 617B
demo_1.8.2.8.py 579B
demo_2.2.py 556B
共 105 条
- 1
- 2
资源评论
生瓜蛋子
- 粉丝: 3797
- 资源: 4426
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功