全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 学道会
857 2
2020-02-06
2020/02/06
《Python深度学习》读书笔记-(Keras之父弗朗索瓦>肖莱著;张亮译)
《No.04: p19~p29》第2章 神经网络的数学基础

2.        初识神经网络
2.1.         此书使用 Python 的 Keras 库来学习手写数字分类
2.1.1.        在机器学习中,分类问题中的某个类别叫作类(class)。数据点叫作样本(sample)。某个样本对应的类叫作标签(label)
2.1.2.        神经网络的核心组件是层(layer),是一种数据处理模块,可看成数据过滤器。层从输入数据中提取表示。大多数深度学习都是将简单的层链接起来,实现渐进式的数据蒸馏(data distillation)。深度学习模型就像是数据处理的筛子,包含一系列越来越精细的数据过滤器(即层)
2.1.3.        要想训练网络,我们还需要选择编译(compile)步骤的三个参数
2.1.3.1.        损失函数(loss function):网络如何衡量在训练数据上的性能,即网络如何朝着正确的方向前进。
2.1.3.2.        优化器(optimizer):基于训练数据和损失函数来更新网络的机制。
2.1.3.3.        在训练和测试过程中需要监控的指标(metric):本例只关心精度,即正确分类的图像所占的比例。

2.2.        神经网络的数据表示
数据存储在多维 Numpy 数组中,也叫张量(tensor)。一般来说,当前所有机器学习系统都使用张量作为基本数据结构。张量对这个领域非常重要,重要到 Google 的 TensorFlow 都以它来命名。
张量这一概念的核心在于,它是一个数据容器。它包含的数据几乎总是数值数据,因此它是数字的容器。你可能对矩阵很熟悉,它是二维张量。张量是矩阵向任意维度的推广
2.2.1.        标量(0D 张量): 仅包含一个数字的张量叫作标量(scalar,也叫标量张量、零维张量、0D 张量)
2.2.2.        向量(1D 张量): 数字组成的数组叫作向量(vector)或一维张量(1D 张量)
2.2.3.        矩阵(2D 张量): 向量组成的数组叫作矩阵(matrix)或二维张量(2D 张量)
2.2.4.        3D 张量与更高维张量: 将多个矩阵组合成一个新的数组,可以得到一个 3D 张量,你可以将其直观地理解为数字组成的立方体。将多个 3D 张量组合成一个数组,可以创建一个 4D 张量,以此类推。深度学习处理的一般是 0D 到 4D 的张量,但处理视频数据时可能会遇到 5D 张量。
2.2.5.        关键属性: 张量是由以下三个关键属性来定义的
2.2.5.1.        轴的个数(阶)。例如,3D 张量有 3 个轴,矩阵有 2 个轴。
2.2.5.2.        形状。这是一个整数元组,表示张量沿每个轴的维度大小(元素个数)。例如,前面矩阵示例的形状为 (3, 5),3D 张量示例的形状为 (3, 3, 5)。向量的形状只包含一个元素,比如 (5,)。
2.2.5.3.        数据类型。张量中所包含数据的类型,张量的类型可以是 float32、uint8、float64 等。
2.2.6.        在 Numpy 中操作张量: 选择张量的特定元素叫作张量切片(tensor slicing)。Numpy 数组上的张量切片运算。
2.2.7.        数据批量的概念: 深度学习中所有数据张量的第一个轴(0 轴,因为索引从 0 开始)都是样本轴(samples axis,有时也叫样本维度)。深度学习模型不会同时处理整个数据集,而是将数据拆分成小批量。
2.2.8.        现实世界中的数据张量:向量、时间序列、图像、视频
2.2.9.        向量
2.2.9.1.        这是最常见的数据。对于这种数据集,每个数据点都被编码为一个向量,因此一个数据批量就被编码为 2D 张量(即向量组成的数组),其中第一个轴是样本轴,第二个轴是特征轴。
2.2.9.2.        如人口统计数据集,其中包括每个人的年龄、邮编和收入。每个人可以表示为包含 3 个值的向量,而整个数据集包含 100 000 个人,因此可以存储在形状为 (100000, 3) 的 2D 张量中。
2.2.9.3.        如文本文档数据集,每个文档表示为每个单词在其中出现的次数(字典中包含 20 000 个常见单词)。每个文档可以被编码为包含 20 000 个值的向量(每个值对应于字典中每个单词的出现次数),整个数据集包含 500 个文档,因此可以存储在形状为 (500, 20000) 的张量中。
2.2.10.        时间序列数据或序列数据
2.2.10.1.        当时间(或序列顺序)对于数据很重要时,应该将数据存储在带有时间轴的 3D 张量中。每个样本可以被编码为一个向量序列(即 2D 张量),因此一个数据批量就被编码为一个 3D 张量。
2.2.10.2.        股票价格数据集。每一分钟,我们将股票的当前价格、前一分钟的最高价格和前一分钟的最低价格保存下来。因此每分钟被编码为一个 3D 向量,整个交易日被编码为一个形状为 (390, 3) 的 2D 张量(一个交易日有 390 分钟),而 250 天的数据则可以保存在一个形状为 (250, 390, 3) 的 3D 张量中。
2.2.10.3.        推文数据集。我们将每条推文编码为 280 个字符组成的序列,而每个字符又来自于 128 个字符组成的字母表。在这种情况下,每个字符可以被编码为大小为 128 的二进制向量(只有在该字符对应的索引位置取值为 1,其他元素都为 0)。那么每条推文可以被编码为一个形状为 (280, 128) 的 2D 张量,而包含 100 万条推文的数据集则可以存储在一个形状为 (1000000, 280, 128) 的张量中。
2.2.11.        图像数据:
2.2.11.1.        图像通常具有三个维度:高度、宽度和颜色深度。
2.2.11.2.        灰度图像的彩色通道只有一维。因此,如果图像大小为 256×256,那么 128 张灰度图像组成的批量可以保存在一个形状为 (128, 256, 256, 1) 的张量中,而 128 张彩色图像组成的批量则可以保存在一个形状为 (128, 256, 256, 3) 的张量中
2.2.12.        视频数据
2.2.12.1.        视频数据是现实生活中需要用到 5D 张量的少数数据类型之一。
2.2.12.2.        视频可以看作一系列帧,每一帧都是一张彩色图像。由于每一帧都可以保存在一个形状为 (height, width, color_depth) 的 3D 张量中,因此一系列帧可以保存在一个形状为 (frames, height, width, color_depth) 的 4D 张量中,而不同视频组成的批量则可以保存在一个 5D 张量中,其形状为 (samples, frames, height, width, color_depth)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-2-6 14:53:58
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-6-27 15:11:02
学习了,谢谢。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群