IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Python 深度学习 Class 2:神经网络的数学基础 -> 正文阅读

[人工智能]Python 深度学习 Class 2:神经网络的数学基础

目录

2.1 初始神经网络

1.加载Mnist数据集

2.网络架构

3.编译步骤

4.准备图像数据

5.准备标签

6.训练网络

2.2 数据表示

1.标量

2.向量

3.矩阵

4.高维张量

5.关键属性

6.操作张量

7.数据批量

8.常用数据张量

9.时间序列数据

2.3 张量运算

1.逐元素运算

2.广播

3.张量点积

4.张量变形

5.几何解释

?6.深度学习的几何解释

2.4 梯度优化


2.1 初始神经网络

1.加载Mnist数据集

from keras.datasets import mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

>>> train_images.shape
(60000, 28, 28)
>>> len(train_labels)
60000
>>> train_labels
array([5, 0, 4, ..., 5, 6, 8], dtype=uint8)

>>> test_images.shape
(10000, 28, 28)
>>> len(test_labels)
10000
>>> test_labels
array([7, 2, 1, ..., 4, 5, 6], dtype=uint8)

train_images 和train_labels 组成了训练集(training set),模型将从这些数据中进行学习。然后在测试集(test set,即test_images 和test_labels)上对模型进行测试。接下来的工作流程如下:首先,将训练数据(train_images 和train_labels)输入神经网络;其次,网络学习将图像和标签关联在一起;最后,网络对test_images 生成预测,而我们将验证这些预测与test_labels 中的标签是否匹配。

2.网络架构

from keras import models
from keras import layers
network = models.Sequential()
network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))
network.add(layers.Dense(10, activation='softmax'))

3.编译步骤

network.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])

损失函数(loss function):网络如何衡量在训练数据上的性能,即网络如何朝着正确的
方向前进
优化器(optimizer):基于训练数据和损失函数来更新网络的机制

在训练和测试过程中需要监控的指标(metric):本例只关心精度,即正确分类的图像所
占的比例。

4.准备图像数据

train_images = train_images.reshape((60000, 28 * 28))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images.astype('float32') / 255

在开始训练之前,我们将对数据进行预处理,将其变换为网络要求的形状,并缩放到所有值都在[0, 1] 区间。比如,之前训练图像保存在一个uint8 类型的数组中,其形状为(60000, 28, 28),取值区间为[0, 255]。我们需要将其变换为一个float32 数组,其形状为(60000, 28 * 28),取值范围为0~1。

5.准备标签

from keras.utils import to_categorical
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

6.训练网络

network.fit(train_images, train_labels, epochs=5, batch_size=128)

2.2 数据表示

神经网络数据存储在多维Numpy数组中,也叫张量。

1.标量

仅包含一个数字的张量,可以使用ndim查看numpy轴的个数

>>> import numpy as np
>>> x = np.array(12)
>>> x
array(12)
>>> x.ndim
0

2.向量

数字组成的数组叫做向量或一维张量

3.矩阵

向量矩阵的数组叫矩阵或二维张量

4.高维张量

多个将矩阵组合成新的数组可以得到3D张量,以此类推,一般处理0D到4D的张量

5.关键属性

包括轴的个数(ndim),形状(shape)以及数据类型(dtype)

6.操作张量

使用张量切片

7.数据批量

深度学习不会同时处理整个数据集,而是将数据拆分成小批量。

8.常用数据张量

向量数据:2D张量形状为 (samples, features)

时间序列数据或序列数据:3D 张量,形状为 (samples, timesteps, features)。

图像:4D张量,形状为(samples, height, width, channels)或(samples, channels,
height, width)。

9.时间序列数据

当时间(或序列顺序)对于数据很重要时,应该将数据存储在带有时间轴的3D 张量中。
每个样本可以被编码为一个向量序列(即2D 张量),因此一个数据批量就被编码为一个3D 张

2.3 张量运算

keras.layers.Dense(512, activation='relu')

output = relu(dot(W, input) + b)

1.逐元素运算

relu 运算和加法都是逐元素(element-wise)的运算,即该运算独立地应用于张量中的每
个元素

2.广播

将两个形状不同的张量相加,若没有歧义的话,较小的张量会被广播(broadcast),以匹配较大张量的形状。

3.张量点积

用* 实现逐元素乘积;Numpy 和Keras 中,都是用标准的dot 运算符来实现点积

4.张量变形

张量变形是指改变张量的行和列,以得到想要的形状。变形后的张量的元素总个数与初始
张量相同

5.几何解释

?

?6.深度学习的几何解释

它将复杂的几何变换逐步分解为一长串基本的几何变换

2.4 梯度优化

output = relu(dot(W, input) + b)

在这个表达式中,W 和b 都是张量,均为该层的属性。它们被称为该层的权重(weight)或可训练参数。一开始,这些权重矩阵取较小的随机值,这一步叫作随机初始化,下一步则是根据反馈信号逐渐调节这些权重。这个逐渐调节的过程叫训练。

训练循环:

?梯度优化的训练循环:

?优化器:带动量的SGD、Adagrad、RMSProp

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-28 22:55:34  更:2021-12-28 22:55:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 3:31:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码