百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

详解SoftMax多分类器(多分类svm代码)

ztj100 2025-06-13 18:13 6 浏览 0 评论

常见的逻辑回归、SVM等常用于解决二分类问题,对于多个选项的分类问题,比如识别手写数字,它就需要10个分类,同样也可以用逻辑回归或SVM(只是需要多个二分类来组成多分类)。对于多分类的实现,我们还可以使用Softmax函数,它是逻辑回归在 N 个可能不同的值上的推广。

Softmax作用

神经网络的原始输出不是一个概率值,实质上只是输入的数值做了复杂的加权(*w+b)和与非线性处理之后的一个值而已,那么如何将这个输出变为概率分布?这就是Softmax 激活的作用(在某个隐藏层设置激活函数为 softmax)

说明:

  • softmax要求每个样本必须属于某个类别,且所有可能的样本均被覆盖;
  • softmax 要求每个样本必须属于某个类别,并且所有可能的样本均被覆盖;
  • softmax个样本分量之和为 1

当只有两个类别时,与逻辑回归完全相同。为了方便理解Softmax的作用,举个例子来说明。如下图所示,神经网络中包含了输入层(x1---x6),然后通过两个隐藏层处理,最后通过softmax分析器就能得到不同条件下的概率,这里需要分成三个类别,最终会得到y=0、y=1、y=2的概率值。

继续看下面的图,三个输入通过softmax后得到一个数组[0.05 , 0.10 , 0.85],这就是softmax的功能。

计算过程直接看下图,其中即为,三个输入的值分别为3、1、-3,的值为20、2.7、0.05,再分别除以累加和得到最终的概率值,0.88,0.12,0。

可以看到它有多个值,所有值加起来刚好等于1,每个输出都映射到了0到1区间,可以看成是概率问题。

SoftMax代码示例

通过Fashion MNIST 数据集 训练一个Softmax分类器,实现分类功能。Fashion MNIST 数据集是经典 MNIST 数据集的简易替换,MNIST 数据集包含手写数字(0、1、2 等)的图像,这些图像的格式与本文使用的服饰图像的格式相同。Fashion MNIST 比常规 MNIST手写数据集更具挑战性。这两个数据集都相对较小,用于验证某个算法能否如期正常运行。它们都是测试和调试代码的良好起点。

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

训练一个衣物鞋包的分类模型,要求把模型分为10个类别,然后预测某个物体属于某个类别的概率。

step1 添加库引用

#添加库引用
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

step2 加载数据

# 下载数据集并划分为训练集和测试集
(train_images,train_lables),(test_images,test_labels) = tf.keras.datasets.fashion_mnist.load_data()
print('train_images.shape',train_images.shape)
print('train_labels',train_lables)
print('train_labels.shape',train_lables.shape)
print('test_images.shape',test_images.shape)
print('test_labels.shape',test_labels.shape)
print('test_labels',test_labels)
###########################################

step3 查看数据

plt.imshow(train_images[0]) # 通过切片取出测试集第一张图片查看
plt.show() #如下图所示
np.max(train_images[0]) #查看最大值得出取值范围0-255
print(train_lables[0]) # 查看对应的分类 9代表鞋子

step4 归一化

# 数组中的每个元素都除以255,归一化到0-1
train_image=train_images/255
test_image=test_images/255

step5 建立模型

#全连接模型
model = tf.keras.Sequential()
# 28*28 dense 是 张量为1的数据 映射到另一个张量为1 的数据,不能将2维数据直接进行运算 扁平化操作到1维
model.add(tf.keras.layers.Flatten(input_shape=(28,28))) 
model.add(tf.keras.layers.Dense(128,activation="relu"))
# 最后一层 用softmax 激活 softmax转换10个类别的概率
model.add(tf.keras.layers.Dense(10,activation="softmax"))

step6 查看模型结构

print(model.summary())

参数计算:

100480 = 128*(784+1)

1290 = 10*(128+1)

step7 编译模型

#编译模型 给模型设置优化器,损失函数,度量参数等信息。在tf.keras里,对于多分类问题我们使用categorical_crossentropy(独热编码) 和
sparse_categorical_crossentropy来计算softmax交叉熵,(使用交叉熵来计算两个概率分布的损失)

#############损失函数
##########leable 使用数字编码(1,2,3,4,5....)sparse_categorical_crossentropy (使用读热编码)
##########lable categorical_crossentropy
model.compile(optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=["acc"]#度量参数
)

step8 训练模型

model.fit(train_image,train_lables,epochs=100)

step9 模型评估

# 使用测试集进行评价
model.evaluate(test_image,test_labels)

相关推荐

13个python常用库,提高你的开发能力

Python拥有大量封装好的功能模块和工具库,这些库广泛应用于数据分析、机器学习、Web开发、自动化等多个领域。库在Python的作用非常重要,利用库不仅能简化复杂的任务还能极大减少开发的时间。下面介...

TensorFlow中logits的含义解析(tensorflow2 lstm)

技术背景在机器学习尤其是深度学习领域,...

Python TensorFlow机器学习模型构建指南

以下是一篇关于使用Python和TensorFlow构建机器学习模型的详细指南,结合代码示例和关键概念解释:探索TensorFlow:构建强大的机器学习模型TensorFlow是由Goo...

TensorFlow和Pytorch中的音频增强

对于图像相关的任务,对图像进行旋转、模糊或调整大小是常见的数据增强的方法。因为图像的自身属性与其他数据类型数据增强相比,图像的数据增强是非常直观的,我们只需要查看图像就可以看到特定图像是如何转换的,...

使用TensorFlow进行深度学习模型训练

深度学习是一种机器学习的子领域,它通过模拟人脑神经网络的结构和运作方式,从而实现在大规模数据上进行复杂任务的训练和预测。TensorFlow是由Google开发的一款开源的深度学习框架,它为我们...

Keras各种Callbacks介绍(keras中backend常用)

1前言在tensorflow.keras中,callbacks能在fit、...

实例解析神经网络的工作原理(神经网络具体实例)

来源:算法进阶...

在浏览器中进行深度学习:TensorFlow.js (五)构建一个神经网络

这一次我们终于可以开始真正的深度学习了,从一个神经网络开始。神经网络(NeuralNetwork)是深度学习的基础,基本概念包括:神经元,层,反向传播等等。如果细讲我估计没有五到十篇文章那是讲不完的...

TensorFlow和Keras入门必读教程(tensorflow_core.keras)

导读:本文对TensorFlow的框架和基本示例进行简要介绍。作者:本杰明·普朗什(BenjaminPlanche)艾略特·安德烈斯(EliotAndres)来源:华章科技01TensorFlo...

Transformer系列:残差连接原理详细解析和代码论证

关键词:...

详解SoftMax多分类器(多分类svm代码)

常见的逻辑回归、SVM等常用于解决二分类问题,对于多个选项的分类问题,比如识别手写数字,它就需要10个分类,同样也可以用逻辑回归或SVM(只是需要多个二分类来组成多分类)。对于多分类的实现,我们还可以...

如何使用 TensorFlow 构建机器学习模型

在这篇文章中,我将逐步讲解如何使用TensorFlow创建一个简单的机器学习模型。TensorFlow是一个由谷歌开发的库,并在2015年开源,它能使构建和训练机器学习模型变得简单。...

芋道 ruoyi-vue-pro 踩的那些坑—前端编译打包问题

1、芋道ruoyi-vue-pro前端没有README.md,是可以理解,毕竟他们是以文档来创收的。但是对于非专业的前端人员非常的不友好。坑是一个接一个,很崩溃。我看项目有有个yarn.lock,...

Nginx部署Vue项目以及解决刷新页面404

在部署vue、react的前端项目时,经常会出现404的问题,一般是文件不是真正的存在,所以Nginx报404的错误一、打包项目1.在项目中的package.json上右键,点击Shownpm...

vue3管理后台,打包方便体积小,访问速度快,代码规整可读性强

项目介绍增强型vue3管理后台,打包方便体积小,访问速度快,代码规整可读性强。项目特点首页...

取消回复欢迎 发表评论: