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]

相关文章
|
7月前
|
机器学习/深度学习 自然语言处理 算法
LSTM-CRF模型详解和Pytorch代码实现
在快速发展的自然语言处理领域,Transformers 已经成为主导模型,在广泛的序列建模任务中表现出卓越的性能,包括词性标记、命名实体识别和分块。在Transformers之前,条件随机场(CRFs)是序列建模的首选工具,特别是线性链CRFs,它将序列建模为有向图,而CRFs更普遍地可以用于任意图。
168 0
|
1月前
|
Python
使用Python实现基本的线性回归模型
使用Python实现基本的线性回归模型
34 8
使用Python实现基本的线性回归模型
|
1月前
|
机器学习/深度学习 Python
使用Python实现逻辑回归模型
使用Python实现逻辑回归模型
33 9
|
机器学习/深度学习 算法 Python
反向传播+代码实现
反向传播+代码实现
84 0
|
机器学习/深度学习 人工智能 算法
【机器学习】逻辑回归(Logistic Regression)(理论+图解+公式推导+代码实现)
【机器学习】逻辑回归(Logistic Regression)(理论+图解+公式推导+代码实现)
500 0
【机器学习】逻辑回归(Logistic Regression)(理论+图解+公式推导+代码实现)
|
机器学习/深度学习 算法框架/工具 网络架构
Lenet神经网络解读及其代码实现
Lenet神经网络解读及其代码实现
Lenet神经网络解读及其代码实现
|
机器学习/深度学习 算法 Python
Python实现线性回归和梯度下降算法
Python实现线性回归和梯度下降算法
178 0
Python实现线性回归和梯度下降算法
|
算法 Python
利用python实现3种梯度下降算法
利用python实现3种梯度下降算法
364 0
利用python实现3种梯度下降算法
|
机器学习/深度学习
深度学习入门(8)激活函数ReLU和 Sigmoid的计算图表示方式及其误差反向传播的代码实现
深度学习入门(8)激活函数ReLU和 Sigmoid的计算图表示方式及其误差反向传播的代码实现
深度学习入门(8)激活函数ReLU和 Sigmoid的计算图表示方式及其误差反向传播的代码实现