使用tf.keras实现 softmax多分类的代码

2023-11-16

**

softmax多分类

**

#多分类问题的关键在于输出10个概率值,然后使用softmax进行激活
#“softmax激活函数”能把10个输出变为10个概率分布,然后这10个概率的和为1
#(1)“对数几率回归”解决的是“二分类的问题”,对于“多个选项”的问题,我们可以使用softmax函数,softmax是对数几率回归在N个可能不同的值上的推广

#(2)“神经网络的原始输出”不是一个概率值,实质上只是输入的数值做了“复杂的加权和与非线性处理”之后的一个值而已,那么如何将这个输出变为概率分布?

#(3)softmax个样本分量之和为1,当只有两个类别时,与对数几率回归完全相同
#softmax要求每个样本必须属于某个类别,且所有可能的样本均被覆盖

#(4)在tf.keras 计算softmax的交叉熵:
#categorical_crossentropy #当我们的lable是独热编码时
#sparse_categorical_crossentropy #当我们的lable是顺序标签时/数字编码时,交叉熵损失函数是sparse_categorical_crossentropy

#–代码所用的数据集是 :
#Fashion MNIST数据集包含70000张灰度图像,涵盖10个类别。
#我们将使用60000张图像训练网络,并使用10000张图像评估经过学习的网络分类图像的准确率。
#可以从 TensorFlow直接访问Fashion MNIST,只需导入和加载数据即可啦。


import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

(train_image,train_lable),(test_image,test_lable)=tf.keras.datasets.fashion_mnist.load_data()
# image是一个图片(0-255)
# lable就是用每一个数字代表它的分类。

print('train_image的形状\n',train_image.shape,'\r\n')
print('train_lable的形状\n',train_lable.shape,'\r\n')
print('test_image的形状\n',test_image.shape,'\r\n')
print('test_lable的形状\n',test_lable.shape,'\r\n')

#plt.imshow(train_image[0])
#plt.show()

#plt.imshow(train_image[99])
#plt.show()

#print(np.max(train_image[0]))

#归一化操作:
train_image=train_image/255
test_image=test_image/255

model=tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))#第一层是一个Flatten层 #28*28
model.add(tf.keras.layers.Dense(128,activation='relu')) #第二个层就不用写input_shape了
model.add(tf.keras.layers.Dense(10,activation='softmax'))#第三层要输出10个概率值,表明可能是哪一种图片 #那么如何把一个输出变成一个概率值呢?使用softmax激活

#补充:Dence层是一个把“一维的数据”映射到另一个“一维的数据”
#“二维的数据”要先进行扁平运算 也就是Flatten层  --->把图像扁平为很长的向量

#编译
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['acc']
              )

#训练
print('训练:\r\n')
model.fit(train_image,train_lable,epochs=5)

#评估
print('评估:\r\n')
model.evaluate(test_image,test_lable)



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用tf.keras实现 softmax多分类的代码 的相关文章