深度学习基础之《TensorFlow框架(16)—神经网络案例》

ops/2024/9/25 19:15:15/

一、mnist手写数字识别

1、数据集介绍
mnist数据集是一个经典的数据集,其中包括70000个样本,包括60000个训练样本和10000个测试样本

2、下载地址:http://yann.lecun.com/exdb/mnist/

3、文件说明
train-images-idx3-ubyte.gz:  training set images (9912422 bytes)
train-labels-idx1-ubyte.gz:  training set labels (28881 bytes)
t10k-images-idx3-ubyte.gz:   test set images (1648877 bytes)
t10k-labels-idx1-ubyte.gz:   test set labels (4542 bytes)

4、特征值
每一个mnist数据单元有两部分组成:一张包含手写数字的图片和一个对应的标签。我们把这些图片设为“xs”,把这些标签设为“ys”。训练数据集和测试数据集都包含xs和ys
比如训练数据集的图片是mnist.train.images,训练数据集的标签是mnist.train.labels

我们可以知道图片是黑白图片,每一张图片包含28像素x28像素。我们把这个数组展开成一个向量。长度是28x28=784。因此,在mnist训练数据集中,mnist.train.images是一个形状为[60000, 784]的张量

5、目标值
mnist中的每个图像都具有相应的标签,0到9之间的数字表示图像中绘制的数字。用的是one-hot编码

二、mnist数据获取API

1、tensorflow框架自带了获取这个数据集的接口,所以不需要自行读取

2、数据集的引入
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
以上四个数据集的格式都为numpy.ndarray

三、案例实战

1、网络设计
我们采用只有一层,即最后,一个输出层的神经网络,也称之为全连接(full connected)层神经网络

一个样本有784个特征,每一个特征都有一个权重值,进行加权求和,加上偏置得到logits,然后给logits加上softmax映射,就会得出一组概率值,概率值当中最大的那个就是它的分类

2、全连接层计算
全连接做的事情就是矩阵相乘

tf.experimental.numpy.matmul(x1, x2) + bias
说明:
(1)return:全连接结果,供交叉损失运算

tf.keras.optimizers.SGD(learning_rate)
说明:
(1)梯度下降
(2)learning_rate:学习率

3、形状表示
x[None, 784] * w[784, 10] + bias[None, 10] = y[None, 10]
x是None行784列,y是None行10列。所以权重的形状是784行10列,偏置是None行10列
 


http://www.ppmy.cn/ops/23631.html

相关文章

深度学习之基础模型——长短时记忆网络LSTM

相关资料 (1)人人都能看懂的GRU - 知乎 (zhihu.com) 引入 在 RNN 那篇博客中提到,根据 RNN 反向传播 BPTT 的特点, RNN 对长时间序列问题难以处理,因为会出现梯度消失和梯度爆炸的问题。详细来说就是当输入序列比较…

【GitHub】如何在github上提交PR(Pull Request) + 多个pr同时提交、互不干扰

【GitHub】如何在github上提交PR(Pull Request 写在最前面1. 准备工作1.1 注册 GitHub 账号1.2 了解 Git 基础1.3 找到一个项目 2. 创建你的 PR2.1 Fork 和克隆仓库2.2 创建一个新的分支2.3 进行更改2.4 推送更改到 GitHub2.5 创建 Pull Request 3. 优化你的 PR3.1 保持提交清晰…

相关运算及实现

本文介绍相关运算及实现。 相关运算在相关检测及数字锁相放大中经常用到,其与卷积运算又有一定的联系,本文简要介绍其基本运算及与卷积运算的联系,并给出实现。 1.定义 这里以长度为N的离散时间序列x(n),y(n)为例,相关运算定义如…

qt——设置ComBox的默认显示内容

在Qt中设置QComboBox的默认显示内容是一个常见的需求。有几种方法可以设置或更改QComboBox的默认显示项,包括在开始时选择一个特定的索引,或者显示一个提示性的文本作为默认内容。下面将分别介绍这些方法。 方法1: 设置默认选中项 最直接的方法是在添加…

用Mermaid画流程图、序列图、类图、甘特图

Mermaid简介 Mermaid 是一种基于文本的图表定义语言,它允许开发者使用文本和代码的形式来创建图表。这种语言的设计初衷是为了方便版本控制和多人协作,同时简化图表的维护和更新过程。 Mermaid的使用场景 Mermaid可以支持markdown格式,所有…

STM32 float浮点数转换成四个字节

float浮点数转换成四个字节 在C或C中,联合体(union)是一种特殊的数据结构,它允许在相同的内存位置存储不同的数据类型。联合体中的所有成员共享同一块内存区域,这意味着同一时间内,联合体只能保存其中一个…

架构师技能:技术深度硬实力透过问题看本质--深入分析nginx偶尔502错误根因

以架构师的能力标准去分析每个问题,过后由表及里分析问题的本质,复盘总结经验,并把总结内容记录下来。当你解决各种各样的问题,也就积累了丰富的解决问题的经验,解决问题的能力也将自然得到极大的提升。励志做架构师的…

进程的概念(2)

进程优先级 1.什么的优先级 概念:指定进程获取某种资源(CPU)的先后顺序 本质:优先级的本质是优先级数字的大小,Linux中优先级数字越小,优先级越高 task_struct 进程控制快-> struct -> 内部字段 -&g…