Softmax 多分类的代码实现 | 学习笔记

简介: 快速学习 Softmax 多分类的代码实现

开发者学堂课程【Tensorflow 2.0入门与实战Softmax 多分类的代码实现】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/664/detail/11106


Softmax多分类的代码实现


内容介绍

一.数据集的形状

二.如何把数据归一化

三.建立模型分类


一.数据集的形状

train_image 的形状,60000张28*28的图片。train_lable 的形状有60000个标签 。

test_image test_label 的形状分别是10000张28*28的图片和10000个标签。

In [5]: train_image. shape

Out[5]:(60000,28,28)

In [6]: train lable.shape

Out[6]:(60000,)

In [7]: test_image.shape, test_label. shape

Out[7]:((10000,28,28),(10000,))

使用 plt.imshow 切出第一张图片

image.png

Image[0]的取值,大部分都是0

image.png

使用 np.max 取最大值为255,所以图片的取值范围在0到255之间。

In [13]: np.max(train_image[0]

Out[13]: 255

trainclable 的取值

In [16]: train_lable

Out[16]: array([9,0,0,..., 3,0,5],dtype=uint8)


二.如何把数据归一化

train_image 取值是从0到255所以将数据除以255,取值范围变为从0到1。用 test_image 除以255。

In [17]: train_image=trainimage/255

test_image=test_image/255

In [18]: train_image.shape

Out[18]:(60000,28,28)

 

三.建立模型分类

1.建立 Sequential 模型

2.添加层

第一层需要将二维的数据变为一维的所以需要添加 Flatten 层,

input_shape =28,28

添加 Dense 层输出128个隐藏单元。使用 relu 进行激活。

注意:

Dense 层隐藏单元不能太少,会舍弃很多有用的信息,太大会过拟合。

输出层要输出10个概率值,使用 softmax 激活。softmax 的作用是将10个输出变成概率分布,10个概率分布和为1。

In [19]: model =tf.keras.Sequential()

model.add(tf.keras.layers.Flatten(input_shape=(28,28))#28*28 model.add(tf.keraslavers.Dense(128,activation=’relu’) )

model.add(tf.keras.layers.Dense(10,activation=’softmax’))

3.编译模型

使用当使用数字编码的时候损失函数使用

sparse_categorical_crossentropy

In [20]: model.compile(optimizer='adam',

loss=' sparse_categorical_crossentropy’

metrics=['acc']

4. train训练

In [*]: model.fit(train_image,train_lable,epochs=5 )

Epoch 1/5

60000/60000[==============================]-2s39us/sample-loss:0.5014I-acc:0.8231

Epoch 2/5

60000/60000[==============================]-2s36us/sample-loss:0.3730-acc:0.8665

Epoch 3/5

60000/60000[==============================]-2s36us/sample-loss:0.3371-acc:0.8

5.test评价

在 test 上进行评价,达到87%的正确率,loss 为0.34

In[23]: model.evaluate(test_image, test_label)

10000/10000[==============================]-0s26us/sample-loss: 0.3422_ acc:0.8763

Out[23]: [0 34224417579174043,0.8763]

相关文章
|
监控 数据可视化 Ubuntu
|
11月前
|
人工智能 自然语言处理 API
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型
UI-TARS 是字节跳动推出的新一代原生图形用户界面(GUI)代理模型,支持跨平台自动化交互,具备强大的感知、推理、行动和记忆能力,能够通过自然语言指令完成复杂任务。
2869 16
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型
|
存储 算法 Java
性能优化:Java垃圾回收机制深度解析 - 让你的应用飞起来!
Java垃圾回收自动管理内存,防止泄漏,提升性能。GC分为标记-清除、复制、标记-整理和分代收集等算法。JVM内存分为堆、方法区等区域。常见垃圾回收器有Serial、Parallel、CMS和G1。调优涉及选择合适的GC、调整内存大小和使用参数。了解和优化GC能提升应用性能。
|
缓存
npm install 安装依赖报错解决
npm install 安装依赖报错解决
487 0
|
Windows
PADS在WIN10系统中菜单显示不全的解决方法
决定由AD转PADS,打开发现菜单显示不正常,如下图所示:
1587 0
|
Web App开发 存储 监控
如何通过Google Chrome远程控制你的Windows 10系统
Google提供了一个免费而又强大的工具--Chrome远程桌面(Chrome Remote Desktop),来允许你连接并控制互联网上的Windows 10电脑系统(这同样适用于Windows 7和8)。根据本文介绍的步骤,你可以在家里或办公室的Windows 10系统上通过设置Chrome远程桌面,来借助互联网进行连接和控制了。
4106 1
如何通过Google Chrome远程控制你的Windows 10系统
|
关系型数据库 MySQL 数据库
mysql8密码修改新建用户授权
mysql8密码修改新建用户授权
276 0
|
3天前
|
数据采集 人工智能 安全