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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 7.softmax多分类 -> 正文阅读

[人工智能]7.softmax多分类

目录

1??概念

2??代码实现

2.1??导入库

2.2??加载数据

2.3??归一化

2.4??建立模型

2.5??编译模型

2.6??训练模型

2.7??评估模型

2.8??预测模型

3??使用独热编码完成fashion_mnist训练

3.1??导入库

3.2??读数据

3.3??转换独热编码

3.4??归一化

3.5??构建模型并编译

3.6??训练模型

3.7??评估模型

3.8??预测模型


1??概念

上一章我们做的是softmax二分类,这次我们做softmax多分类

  • softmax多分类公式

上面这是两个损失函数,当我们使用0,1,2,3这种数字做标签时,我们使用sparse_categorical_crossentropy,如果label使用独热编码我们使用categorical_crossentropy

下面这种编码方式就是独热编码

我们下面代码中用的是Fashion_MNIST,这个是包含衣服,鞋子,包这种图像的数据集

这个数据集包含了7w张图片,共有10个类别,大概是下面这个样子的

2??代码实现

2.1??导入库

2.2??加载数据

fashion_mnist是tensorflow中自带的数据集,它分为四个部分,分别为train_image(训练图像),train_label(训练标签),test_image(测试图像),test_label(测试标签)

第一次运行代码时会自动下载数据集,再一次使用则会直接使用

它自动下载会下载到这里,我当前的路径是这个,根据用户名不同会有所改变

C:\Users\MSI.keras\datasets

里面有四个压缩包,前两个是测试的图片与标签,后两个是训练的图片与标签

我们看一下train_image,train_label,test_image,test_label的shape

我们现在看一下train_image的第0张图片

我们在看一下第0张图片的数值情况

这个我就截取其中的一部分,发现它的取值范围为[0,255]

我们再看一下第0张图像对应的标签

发现显示出一个9,fashion_mnist中使用整形数据表示标签,我们这里的9代表鞋子,我们的label的取值范围为[0,9]一共十分类

2.3??归一化

我们讲train_image与test_image除255,这样我们的取值范围就为[0,1]

2.4??建立模型

我们依然使用顺序模型

我们之前使用的层只有dense层,那个是处理一维数据的,现在我们的输入是(28,28),这个是个二维数据,所以我们第一层要使用Flatten(扁平层),这一层的目的是将其变成28*28的向量,这样我们这一层的结果就变为了1维数据,后面就能使用dense了

128是我们自定的神经元个数,这个没有一个最佳值,太小会欠拟合,太大会过拟合

这一层是输出层,由于我们是10分类所以我们在这里写10,如果是6分类就写6,后面的激活函数是softmax,只要是分类问题(不管是10分类还是6分类)就一定要用softmax,上一章我们提到了二分类,二分类用sigmod(当然2分类用softmax也不会报错,就是效果不好)

我们看一下整体的模型

我们可以看到Flatten这层是没有参数的,在这里只对数据进行转换 784 = 28 * 28 ,下一层dense层 100480 = 784 * 128 + 128

2.5??编译模型

优化器使用adam,loss值使用sparse_categorical_crossentropy(标签是数字),我们在训练过程中检测其正确率

2.6??训练模型

2.7??评估模型

我们使用测试集对训练好的模型进行评估

2.8??预测模型

我们最后进行预测一下,然后与原本的标签进行比对

这个是未经过处理的预测结果,结果中会包含10个值,这个值可以理解为每个分类的可能性,一般来讲,我们会选取10个值中的最大值然后获取其索引从而得到最终的结果

可以使用np.argmax()取出最大值的索引,我在这里就人工取最大值了[9,2,1,1,6,1,4,6,5]

我们可以用上面的结果和下面的实际值进行比对,发现正确率还是可以的(前9个都是正确的)

3??使用独热编码完成fashion_mnist训练

上面我们使用的是数字编码作为label,使用的loss为sparse_categorical_crossentropy,现在我们使用独热编码作为label,使用loss为categorical_crossentropy再做一遍

3.1??导入库

3.2??读数据

3.3??转换独热编码

我们使用utils.to_categorical()将数字编码转换为独热编码

我们显示出来看一下

测试数据也应改为独热编码,后面进行评估时要用到

我们看刚刚那个鞋的标签

我们发现在第9位(从0数)的值置为1,我们没转变独热编码之前的label是9

3.4??归一化

3.5??构建模型并编译

与上面相同,只是更换了loss

  • 我刚刚发现pycharm中model.summary()不用print就可以显示,我们以后就不加print了

3.6??训练模型

这里我们要换掉label

3.7??评估模型

3.8??预测模型

我们在这使用np.argmax直接取出最大值索引

之后再对比一下,发现预测结果与实际结果相似

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-24 10:34:02  更:2021-09-24 10:35:38 
 
开发: 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年11日历 -2024/11/27 12:54:10-

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