深度学习第二课 Softmax回归

深度学习笔记: 最详尽解释Softmax 回归 Softmax Regression 欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家! Softmax 回归 Softmax 回归,也称为多项逻辑回归,是逻辑回归的广义,用于多类分类问题。虽然逻辑回归用于二分类,softmax 回归则用于类别超过两个的情况。 Softmax 回归的关键点: 多类分类:当因变量可以有两个以上的类别时,使用 softmax 阅读详情

与第一课线性回归(linear regression)不同,softmax回归针对的是多分类的情况,即labels不再仅有0,1两个分类。

softmax通过指数运算将最后的分类转为0~1间的概率,在终于类别概率中,数值大的为预测概率。

与线性回归损失不同,softmax函数计算损失采用的是交叉熵损失(Cross Entropy),原理和公式推导可参考:https://zhuanlan.zhihu.com/p/27223959

softmax函数简单实现代码如下:

from mxnet import autograd,nd
import gluonbook as gb
%matplotlib inline 
import time
import matplotlib.pyplot as plt
import sys

#读取数据
batch_size = 256
train_iter,test_iter = gb.load_data_fashion_mnist(batch_size)

#参数初始化
num_inputs = 784
num_outputs = 10

w = nd.random.normal(scale = 1,shape = (num_inputs,num_outputs))
b = nd.random.normal(num_outputs)

w.attach_grad()
b.attach_grad()

#正向传播,实现softmax运算
def softmax(x):
    return nd.exp(x) / nd.exp(x).sum(axis = 1,keepdims = True)

def net(x):
    return softmax(nd.dot(x.reshape((-1,num_inputs)),w) + b)    #对求得的yhat执行softmax运算

def cross_entropy(y_hat,y):               #定义交叉损失熵函数
    return -nd.pick(y_hat,y).log()
def accuracy(yhat,y):
    return (yhat.argmax(axis = 1) == y.astype('float32')).mean().asscalar()   #提取yhat中每行概率最大的类别和真实值y的类别比较后的概率
def evaluate_accuracy(data_iter,net):
    acc = 0
    for X,y in data_iter:
        acc+= accuracy(net(X),y)
        return acc/len(data_iter)
        
num_epochs,lr = 5,0.1
#训练模型
def train_ch3(net,train_iter,test_iter,loss,num_epochs,batch_size,params = None,lr = None,trainer = None):
    for epoch in range(num_epochs):
        train_l_sum = 0     #定义训练损失总和
        train_acc_sum = 0   #定义训练精度总和
        for X ,y in train_iter:
            with autograd.record():
                y_hat = net(X)
                l = loss(y_hat,y)
            l.backward()
            if trainer is None:
                gb.sgd(params,lr,batch_size)
            else:
                trainer.step(batch_size)
            train_l_sum += l.mean().asscalar()
            train_acc_sum += accuracy(y_hat,y)
        test_acc = evaluate_accuracy(test_iter,net)
        print('epoch %d, loss %.4f, train acc %.3f, test acc %.3f'
              % (epoch + 1, train_l_sum / len(train_iter),
                 train_acc_sum / len(train_iter), test_acc))
train_ch3(net, train_iter, test_iter, cross_entropy, num_epochs,
          batch_size, [w, b], lr)
        

 

简单小计:

1)keepdims = True:

2)nd.pick():

3) (yhat.argmax(axis = 1) == y.astype('float32')).mean().asscalar():

取yhat中每行概率最大的类别和真实值y的类别比较后的概率(比较后得到的矩阵里面只有0和1两类),.mean()相当于求取了和真实值比较多概率。

eg:

Softmax()的Gluon实现:

%matplotlib inline
import gluonbook as gb
from mxnet import gluon, init
from mxnet.gluon import loss as gloss, nn

#读取数据
batch_size = 256
train_iter, test_iter = gb.load_data_fashion_mnist(batch_size)

#初始化模型
net = nn.Sequential()
net.add(nn.Dense(10))    #定义输出层目标为10
net.initialize(init.Normal(sigma=0.01))

#定义Softmax函数和损失
loss = gloss.SoftmaxCrossEntropyLoss()
#定义优化算法
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.1})
#训练模型
num_epochs = 5
gb.train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size, None,
             None, trainer)

小计:

1)nn模块:

“nn”是 neural networks(神经网络)的缩写。顾名思义,该模块定义了大量神经网络的层。我们先定义一个模型变量net,它是一个 Sequential 实例。在 Gluon 中,Sequential 实例可以看作是一个串联各个层的容器。在构造模型时,我们在该容器中依次添加层。当给定输入数据时,容器中的每一层将依次计算并将输出作为下一层的输入。

作为一个单层神经网络,线性回归输出层中的神经元和输入层中各个输入完全连接。因此,线性回归的输出层又叫全连接层。在 Gluon 中,全连接层是一个Dense实例。net.add(nn.Dense(10)),表明输出层个数是10。

mxnet pick挑选 代码格式,x,y都需要转成mxnet nd.array形式 import mxnet as mx import mxnet.gluon.loss as gloss # from mxnet import nd x =np.array([[ 1., 2.], [ 3., 4.], [ 5., 6.]]) x = mx.nd.array(x) y=np.array([ 0, 1,1]) y=mx.nd.array(y) result= nd.pick(x, y,1)... 阅读详情

相关推荐

从零实现深度学习框架——Softmax回归简介

逻辑回归只能处理二分类问题,但是很多时候我们遇到的是多分类问题。此时就需要用到多元逻辑回归。

日积月累,天道酬勤 1509

深度学习笔记(四)

目录 本文将介绍以下内容 softmax回归从零开始实现 softmax回归的简洁实现 小结 softmax回归从零开始实现 读取数据集 batch_size = 256 #Gluon的DataLoader中允许使用多进程加速数据读取(linux系统) #在上一章的基础上,我们需要小批量的读取数据样本的函数 train_iter,test_iter = d2l.load_data_fa...

qq_40318498的博客 1033

从零实现深度学习框架——动手实现Softmax回归

上篇文章对Softmax回归进行了简单的介绍,本文我们就来从零实现Softmax回归。

日积月累,天道酬勤 2299

python astype函数_神经网络中常见激活函数的python表达

在神经网络最后的输出层,通常会使用激活函数将最后一层神经元得到的数据再进行计算,最终得到一个输出的结果,这里称该函数为激活函数,比对输出表达式为,当最后一层输出元得到的数据大于0,则输出1,小于0则输出0,这种称为阶跃函数,常见的激活函数有阶跃函数,sigmoid,ReLU,tanh函数阶跃函数阶跃函数的意义为,当输入数据大于某个值时输出值A,小于等于某个值时为B,表现为在某个值时输出突然变化,数...

weixin_39952182的博客 326

通俗解析:霍尔编码器、光电编码器、电位计、磁编码器和旋转变压器的实战选型指南

本文深入解析了霍尔编码器、光电编码器、电位计、磁编码器和旋转变压器五大主流编码器的工作原理与核心特性。通过对比精度、环境耐受性、成本及寿命等关键维度,并结合消费电子、工业自动化、汽车电子及极端环境等典型应用场景,提供了一份清晰的实战选型指南,旨在帮助工程师根据具体需求,在性能、可靠性与成本间做出最优决策。

weixin_29216353的博客 254

C#计算八字

private string[] jq = { "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至" };private string[] dz = { "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥", "子" };

m0_72939038的博客 828

astype()函数

astype()函数可用于转化dateframe某一列的数据类型 如下将dateframe某列的str类型转为int,注意astype()没有replace=True的用法,想要在原数据上修改,要写成如下形式。 注意只有当该列的字符串全是由纯数字构成时才可以这样写,如果混有字母,会报错:ValueError: invalid literal for int() with base 10: 利...

weixin_36670529的博客 1万+

片上眼图(Eye-opening monitor)

当它们值不同的时候error counter +1,通过统计RX到的码元个数、error counter,可以获得offset sampler上下左右不停的调整位置时的一个误码率(BER),通过这个误码率去描绘出眼图。如上图所示,eye-scan RX端 offset sampler独立且并行的和使用CDR sample的采样电路一起跑,offset-sampler可以任意调整水平(time)和垂直(voltage)方向的偏移(如下图所示),在一个UI内产生一个全新的sample点。

沈土豪的书屋 4419

Mxnet(一)

瞻仰一下沐神的风采,顺便再撸一遍基础。相比之前撸的Tensorflow,这次有更多细节算法,比如softmax的具体实现等。 一、Basic 关于矩阵: from mxnet import ndarray as nd #创建一个3行4列矩阵 nd.zeros((3,4)) nd.ones((3,4)) #创建指定内容的矩阵 nd.array([[1,2],[2,3]]) #创建一个随机...

aspirinLi的博客 498

【Boost5】Boost变换器的输入电容

节点的电流有3个,一个是来自电源输入的,由于我们把Vin看成理想电源以及线路的电感的存在,它可以近似看作是恒定的电流源Iin,一个是流向输入电容Cin的电流Icin,另外一个节点是电感L电流IL。电容电流波形在整个开关周期内的平均值为0,充电和放电在一个周期中各占1/2,在图中充电部分面积和放电部分面积相等,那么在充电或放电的电荷量Q=I*t,从图中可以看出,在一个周期内电容电流变化量是ΔIL,那在电容在充电1/2T周期中电流的变化量是1/2ΔIL。输入电容上的ESR也会随着电流变化,影响输入电压的变化。

qq_43416206的博客 3349

Fortran环境配置:VS2022+Intel oneAPI安装全流程指南

Fortran环境配置:VS2022+Intel oneAPI安装全流程指南

shuyisuisuinian的博客 2万+

3.8 Softmax 回归-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

Softmax 回归 (Softmax Regression) 到目前为止,我们讲到过的分类的例子都使用了二分分类,这种分类只有两种可能的标记0或1,这是一只猫或者不是一只猫,如果我们有多种可能的类型的话呢?有一种logistic回归的一般形式,叫做Softmax回归,能让你在试图识别某一分类时做出预测,或者说是多种分类中的一个,不只是识别两个分类,我们来一起看一下。 假设你不单需要识别猫,而是...

赵继超的笔记 3534

15、基于最优传输的协作多视图聚类框架

本文提出了一种基于最优传输理论的协作多视图聚类框架,通过引入协作学习机制在不同视图间建立先验交互,以提升共识聚类的质量。框架包含两种新方法:协作共识投影方法(CoCP)和基于新表示的协作共识方法(CoCNR)。CoCP在全局空间中整合多视图信息并进行共识投影,而CoCNR则通过协作编码生成新的数据表示以实现更优聚类。方法利用熵正则化的Wasserstein距离与Wasserstein重心,有效捕捉数据分布间的几何结构,并通过聚合步骤获得统一模型。实验结果表明,所提方法在多个数据集上均优于现有方法,具有良好的

gpt4scribbler的博客 86

深度学习入门:线性回归与Softmax回归详解

本文深入解析了深度学习中的两大基础模型:线性回归和Softmax回归。线性回归通过构建特征与连续输出的线性关系,成为回归任务的基准模型,其训练核心在于均方损失函数和梯度下降优化算法。Softmax回归则扩展为多分类解决方案,通过Softmax运算将线性输出转化为概率分布,并采用交叉熵损失避免梯度消失问题。二者共享线性建模基础和"损失-优化"训练框架,但在输出处理和损失函数上存在关键差异。实践部分展示了PyTorch实现案例,并指出这两种模型虽简单却蕴含了深度学习的核心思想:参数化建模、梯

2401_83690033的博客 1863

在 AS ABAP 7.40 SP05 里把 HANA 存储过程纳入 ABAP 生命周期:AMDP 实战示例与踩坑笔记

文章摘要:AMDP(ABAP Managed Database Procedures)是SAP推出的框架,用于在ABAP中管理数据库端的存储过程或函数,特别适用于HANA数据库。它通过将数据库语言(如SQLScript)嵌入ABAP方法,实现数据处理逻辑的"下推"(code pushdown),减少应用层与数据库间的数据传输。AMDP适用于需要数据库特有能力或大规模数据处理的场景,但应优先考虑Open SQL或ABAP CDS等更简单的方案。开发时需注意数据库类型检查、参数前缀(:)等语

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 225

知识图谱-KGE-语义匹配-双线性模型-2018:SimplE

【paper】 SimplE Embedding for Link Prediction in Knowledge Graphs 【简介】 本文是加拿大英属哥伦比亚大学的两位学者发表在 NIPS 2018 上的工作,文章提出了 SimplE(Simple Embedding)。这篇和前面一篇差不多,也是对 1927 年的 CP 进行改进(简化),传统CP为实体分配的两个向量是独立训练的,SimplE利用关系的逆在三元组打分函数中加上了一个对称项,使得每个实体的两个向量依赖学习,并且 SimplE 的复杂度随

u013250861的博客 958

深度学习之线性回归与 Softmax 回归

模型定位:线性回归用于连续值预测,Softmax 回归用于多类分类,后者可视为针对分类任务优化的单层全连接神经网络。优化核心:梯度法是参数优化的基础,通过沿损失函数的负梯度方向更新参数实现误差最小化;小批量随机梯度下降是深度学习的默认优化算法。关键超参数:批量大小和学习率直接影响模型训练效率与收敛效果,需根据任务场景合理调优。损失函数选择:回归任务可选用平方损失、L1 损失等;分类任务优先使用交叉熵损失,配合 Softmax 运算实现概率输出与误差量化。

2201_76007872的博客 1269

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【深度学习基础】线性神经网络07:softmax回归的简洁实现

本文讲解深度学习中softmax回归的简洁实现。从计算的角度来看,实现softmax回归比较复杂。在许多情况下,深度学习框架在这些著名的技巧之外采取了额外的预防措施,来确保数值的稳定性。这使我们避免了在实践中从零开始编写模型时可能遇到的陷阱。

Morse_Chen的博客 1709

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习实现——softmax回归

介绍softmax回归的实现方法

2301_78829965的博客 2457

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【深度学习基础】线性神经网络04:softmax回归

本文讲解深度学习中softmax回归的实现。softmax运算获取一个向量并将其映射为概率。适用于分类问题,使用了softmax运算中输出类别的概率分布。交叉熵是一个衡量两个概率分布之间差异的很好的度量,它测量给定模型编码数据所需的比特数。

Morse_Chen的博客 1852

深度学习:Softmax回归

线性回归适合于预测连续值,而对于分类问题的离散值则束手无策。因此引出了本文所要介绍的softmax回归模型,该模型是针对多分类问题所提出的。下面我们将从softmax回归模型的原理开始介绍,最后我们同样会基于PyTorch来实现基本的softmax模型。......

qq_35149975的博客 2024

【动手学深度学习】part9-softmax回归

Softmax 回归(也称为多项式逻辑回归或最大熵分类器)是一种用于多分类问题的线性模型。它主要用于将输入数据映射到多个离散类别中的一个。Softmax 回归是逻辑回归(Logistic Regression)的扩展,适用于多分类任务,而不是二分类任务。用沐神两页ppt阐述softmax回归里的核心概念。

lxlyhwl的博客 1422

AI遮天传 DL-回归与分类

本文主要介绍Logistic回归和Softmax回归,用回归模型解决分类问题。

suic009的博客 2988

【深度学习】softmax回归的简洁实现

我们发现(通过深度学习框架的高级API能够使实现)(softmax)线性(回归变得更加容易)。 同样,通过深度学习框架的高级API也能更方便地实现softmax回归模型。 本节继续使用Fashion-MNIST数据集,并保持批量大小为256。 初始化模型参数 [softmax回归的输出层是一个全连接层]。 因此,为了实现我们的模型,我们只需在中添加一个带有10个输出的全连接层。 同样,在这里并不是必要的,但它是实现深度模型的基础。 我们仍然以均值0和标准差0.01随机初始化权重。 重新审视Softmax的

Sakura_ding的博客 1573

09【动手学深度学习】Softmax回归

本文介绍李沐的动手学深度学习中的softmax回归pytorch实现

weixin_59251911的博客 1173
上一篇: 深度学习第一课 线性回归
下一篇: 深度学习第三课 多层感知机
Halo_Linch
博客等级 码龄11年 11粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值