softmax激活函数

Softmax激活函数是一种用于多类别分类问题的激活函数,通常用于神经网络的输出层。它将原始分数(也称为logits)转换为表示概率分布的数值,使得每个类别的概率值都在0和1之间,并且所有类别的概率之和等于1。这使得它适用于多类别分类问题,其中每个样本只能属于一个类别。

Softmax函数的数学定义如下:

对于给定的原始分数(logits)z = [z1, z2, …, zn],Softmax函数将这些分数转换为概率分布p = [p1, p2, …, pn]
在这里插入图片描述
在这里插入图片描述

其中,e表示自然对数的底(欧拉数),n表示类别的数量,zi是第i个类别的原始分数。

Softmax函数的特点包括:
(1)将输入映射到0和1之间:Softmax函数确保每个类别的概率在0和1之间,因此可以用来表示每个类别的相对权重。
(2)归一化:Softmax函数对原始分数进行归一化,使所有类别的概率之和为1,这使得它适用于多类别互斥的分类问题。
(3)放大差异:Softmax函数会放大具有更高原始分数的类别的概率,因此可以更好地区分不同类别的可能性。

Softmax激活函数通常用于神经网络的输出层,特别是在多类别分类任务中,如图像分类、文本分类和语音识别。在训练过程中,Softmax函数的输出与实际的类别标签之间的差异通常使用交叉熵损失函数来度量,以便调整网络参数以最小化损失。

本文主要包括以下内容:

  • 1. nn.ReLU的常见用法
  • 2. ReLU激活函数图像实现

1. nn.ReLU的常见用法

在深度学习框架中,如PyTorch、TensorFlow或Keras,通常有内置的softmax函数,可用于计算Softmax激活函数的输出。下面是使用PyTorch作为示例的一些关于如何使用nn.softmax函数的说明:

import torch
import torch.nn as nn# 假设有原始分数 logits
logits = torch.tensor([3.0, 2.0, 1.0])# 创建一个Softmax模块
softmax = nn.Softmax(dim=0)# 使用Softmax模块来计算Softmax激活
softmax_output = softmax(logits)# 输出Softmax激活后的结果
print(softmax_output)#输出结果:
#tensor([0.6652, 0.2447, 0.0900])

接下来我们再用普通的方法验算一下:

import mathresult3 = math.exp(3)
result2 = math.exp(2)
result1 = math.exp(1)
print(result3)
print(result2)
print(result1)r=result3+result2+result1
r1=result3/r
r2=result2/r
r3=result1/rprint([(r1),(r2),(r3)])#输出结果:
#result3: 20.085536923187668
#result2: 7.38905609893065
#result1: 2.718281828459045
#[0.6652409557748219, 0.24472847105479764, 0.09003057317038045]
#与上面的代码运行结果相同

上述代码演示了如何使用PyTorch中的nn.Softmax模块来计算Softmax激活。需要注意以下几点:

(1)首先,导入PyTorch库以及nn模块。
(2)创建一个包含原始分数(logits)的张量(上述示例中logits的数据是示例数据,你可以用你自己的实际数据替代)。
(3)创建一个Softmax模块,使用nn.Softmax,并通过dim参数指定在哪个维度上进行Softmax操作。通常,dim=0表示在第一个维度(通常是类别维度)上应用Softmax操作。
(4)使用Softmax模块来计算Softmax激活,将原始分数作为输入。
(5)最后,输出Softmax激活后的结果。

请注意,不同的深度学习框架可能有略微不同的用法,但通常都会提供类似的Softmax函数来执行这个任务。在TensorFlow中,你可以使用tf.nn.softmax函数来执行类似的操作,而在Keras中,你可以使用keras.layers.Softmax层。确保查看你使用的特定框架的文档以了解更多细节。

2. ReLU激活函数图像实现

我们可以使用Python的matplotlib库来绘制Softmax函数的图像。下面是一个示例代码,它演示了如何绘制Softmax函数的图像:

import numpy as np
import matplotlib.pyplot as pltdef softmax(logits):exp_logits = np.exp(logits)softmax_output = exp_logits / np.sum(exp_logits)return softmax_output# 生成一组原始分数(logits)
logits = np.arange(-5, 6, 1)# 计算Softmax激活
softmax_output = softmax(logits)# 绘制Softmax函数图像
plt.figure(figsize=(8, 4))
plt.plot(logits, softmax_output, marker='o', linestyle='-')
plt.title('Softmax Function')
plt.xlabel('Logits')
plt.ylabel('Probability')
plt.grid(True)
plt.show()

运行此段代码,即可得到softmax激活函数的输出图像
在这里插入图片描述

这段代码首先定义了一个softmax函数,该函数接受原始分数(logits)作为输入,并返回Softmax激活后的概率分布。然后,它创建了一个示例的logits数组,计算Softmax输出,并使用Matplotlib库绘制Softmax函数的图像。

在图像中,x轴表示类别,y轴表示对应类别的概率。你可以根据需要更改logits数组的值,以查看不同输入情况下Softmax函数的输出。
运行上述代码后,我们将看到一个简单的条形图,显示了Softmax函数的输出,其中概率随输入的不同而变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/105175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TOR(Top of Rack)

TOR TOR(Top of Rack)指的是在每个服务器机柜上部署1~2台交换机,服务器直接接入到本机柜的交换机上,实现服务器与交换机在机柜内的互联。虽然从字面上看,Top of Rack指的是“机柜顶部”,但实际T…

Sublime Text 常用插件

Alignment: 代码对齐插件,即""号对齐,变量定义太多,长短不一,可一键对齐,默认快捷键CtrlAltA可能和QQ截屏功能冲突,可设置其他快捷键如:CtrlShiftAltAAutoFileName: 快捷输入文件名插…

在雷电模拟器9上安装magisk并安装LSPosed模块以及其Manager管理器(二)之LSPosed的使用

上一篇已经安装好LSPosed模块及其Manager管理器,参考文章 在雷电模拟器9上安装magisk并安装LSPosed模块以及其Manager管理器(一)-CSDN博客 安装完成后,在模拟器上出现图标如下: 一、运行LSPosed 二、仓库模块 内容非…

【小白入门】ASP.NET Core 创建 Web API

ASP.NET Core 支持使用 C# 创建 RESTful 服务,也称为 Web API。 若要处理请求,Web API 使用控制器。 Web API 中的 控制器 是派生自 ControllerBase 的类。 本文介绍了如何使用控制器处理 Web API 请求。 Web API 包含一个或多个派生自 ControllerBase …

在面试提问环节应该问那些内容

在面试提问环节应该问那些内容 薪资和福利: 你可以询问关于薪资、福利和其他福利待遇的细节,包括工资结构、健康保险、退休计划、带薪休假等。 了解关于加班、绩效奖金和涨薪机会的信息。 工作时间和灵活性: 询问工作时间、工作日和工作日…

内排序算法

排序算法是面试中常见的问题,不同算法的时间复杂度、稳定性和适用场景各不相同。按照数据量和存储方式可以将排序算法分为 内排序(Internal Sorting)和 外排序(External Sorting)。 内排序是指对所有待排序的数据都可…

华为校招机试题- 机器人活动区域-2023年

题目描述: 现有一个机器人,可放置于 M N的网格中任意位置,每个网格包含一个非负整数编号。当相邻网格的数字编号差值的绝对值小于等于 1 时,机器人可在网格间移动 问题:求机器人可活动的最大范围对应的网格点数目。 说明: 1)网格左上角坐标为 (0, 0),右下角坐标为 (m-…

Unity - Normal mapping - Reoriented normal mapping - 重定向法线、混合法线

文章目录 目的核心代码PBR - Filament - Normal mappingShader效果BlendNormal_Hill12BlendNormal_UDNBlendNormals_Unity_Native - 效果目前最好 ProjectReferences 目的 备份、拾遗 核心代码 half3 blended_normal normalize(half3(n1.xy n2.xy, n1.z*n2.z));PBR - Filam…

iOS 内存管理和优化

对内存管理和拓展有独特的描述 iOS学习-内存管理 比较详细说明内存的关系 iOS 内存管理机制与原理 iOS 内存泄漏排查方法及原因分析 对weak的实现原理描写详细 【iOS】—— weak的基本原理 iOS copy & mutableCopy iOS 深拷贝与浅拷贝 对iOS的浅复制和深复制的深入解释…

算法|每日一题|只出现一次的数字|位运算

136.只出现一次的数字 力扣每日一题:136.只出现一次的数字 之前整理过本题及其扩展,详细说明了思路和做法,链接如下: 只出现一次的数字I,II,III 给你一个 非空 整数数组 nums ,除了某个元素只出…

python爬虫练手项目之获取某地企业名录

因为很多网站都增加了登录验证,所以需要添加一段利用cookies跳过登陆验证码的操作 import pandas as pd import requests from lxml import etree # 通过Chrome浏览器F12来获取cookies,agent,headers cookies {ssxmod_itna2:eqfx0DgQGQ0QGDC…

AQS面试题

更多面试资料请添加wx:suns45 ———Java的AQS——— 1、AQS的理解 AQS是一个锁框架,提供了扩展地方 当多个线程抢锁时,获取不到锁的线程,AQS会自动管理 AQS是同步队列条件队列 AQS分为4个时机,获取锁&#xff0c…

文心一言Plugin实战来了,测试开发旅游攻略助手

刚刚过去的8月,百度WAVE SUMMIT 深度学习开发者大会上,重磅发布文心一言的五个原生插件:百度搜索、览卷文档(基于文档的交互)、E 言易图(数据洞察图表生成)、说图解画(基于图片的交互…

代码随想录算法训练营第二十二天 | LeetCode 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树

代码随想录算法训练营第二十二天 | LeetCode 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树 文章链接:修剪二叉搜索树 将有序数组转换为二叉搜索树 把二叉搜索树转换为累加树 视频链接:修剪二叉搜…

启动Spring Boot项目

介绍启动运行Spring Boot项目打包的jar 1、使用java -jar命令启动项目 java -jar project.jar 执行效果: 使用java -jar 文件名.jar启动项目,项目在前台运行,项目运行的日志将打印在当前控制台上,若退出当前控制台&#xff0c…

函数调用:为什么会发生stack overflow?

在开发软件的过程中我们经常会遇到错误,如果你用 Google 搜过出错信息,那你多少应该都访问过Stack Overflow这个网站。作为全球最大的程序员问答网站,Stack Overflow 的名字来自于一个常见的报错,就是栈溢出(stack ove…

微信小程序生成海报

效果: js1: const cloudHelper = require(../../../helper/cloud_helper.js);async function config1({cover,title,desc,qr,bg = }) {var qr1 ="images/qr.png"var qr2 ="https://636c-cloud1-0gu29f2j63906b7e-1319556650.tcb.qcloud.la/activitycomm/setu…

web入门---tomcat请求响应

Tomcat 介绍 Web 服务器是一个软件程序,对 HTTP协议的操作进行封装,使得不必直接对协议进行操作,让 web 开发更加便捷。主要功能是“提供网上信息浏览服务”。 下载 tomcat 演示说明 这里有一个示例直接双击打开 index.html但是这个“打开…

OK3568 UBUNTU 安装使用I2C-TOOLS

1. 安装 sudo apt-get update sudo apt-get install i2c-tools 使用I2Ctools 参考:https://blog.csdn.net/anyuliuxing/article/details/106382827 i2c-tools 是一组用于在Linux系统中进行I2C(Inter-Integrated Circuit)总线设备操作和调试…

3.7 Android eBpf Hello World调试(一)

写在前面 tracepoint是Linux内核中预定义的静态探测点,分布于内核各个子系统中。每个tracepoint通常包含开关-enable,过滤器-filter等。如下是/sys/kernel/tracing/events/sched子系统中支持的各种tracepoint事件: coral:/sys/kernel/tracing/events/sched $ ls core_ctl_…