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…

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

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

内排序算法

排序算法是面试中常见的问题,不同算法的时间复杂度、稳定性和适用场景各不相同。按照数据量和存储方式可以将排序算法分为 内排序(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…

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 言易图(数据洞察图表生成)、说图解画(基于图片的交互…

启动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但是这个“打开…

Cadence 设计实践笔记-小哥allegro 2层板笔记

本章节主要跟着B站PCB入门首选视频-小哥Cadence Allegro 2层板视频,结合自己的实践一步步完成一个完整的PCB板的设计。 视频链接地址: PCB入门首选视频-小哥Cadence Allegro 2层板视频_哔哩哔哩_bilibili 规范建立文件夹 建立八个文件夹 DATASHEET 主要存放设计项目…

第十二章 磁盘管理

1. 磁盘简介 1.1. 概念 硬盘是由一片或多篇带有磁性的铝合金制的盘片构成,是 一种大容量、永久性的外部存储设备 组成:盘片、马达驱动、缓存、控制电路、接口 图: 1.2. 逻辑结构 磁道:由内到外的同心圆 扇区:半径组成…

JVM基础:初识JVM

IDE:IntelliJ IDEA 2022.1.3 x64 操作系统:win10 x64 位 家庭版 文章目录 一、JVM是什么?二、JVM有哪些功能?2.1 解释和运行2.2 内存管理2.3 即时编译 三、有哪些常见的JVM?3.1 常见JVM3.2 Java虚拟机规范3.3 HotSpot的…

C++入门 第一篇(C++关键字, 命名空间,C++输入输出)

目录 1. C关键字 2. 命名空间 2.1 命名空间定义 2.2命名空间的使用 命名空间的使用有三种方式: 1.加命名空间名称及作用域限定符 2.使用using将命名空间中某个成员引入 3.使用using namespace 命名空间名称 引入 3. C输入&输出 4.缺省函数 4.1 缺省参…

记一次Hbase2.1.x历史数据数据迁移方案

查看待迁移的表 list_namespace_tables vaas_dwm2. 制作待迁移表“DWM_TRIP_PART”的快照 snapshot vaas_dwm:DWM_TRIP_PART,dwm_trip_part_snapshot3. 统计待迁移表数据总数 hbase org.apache.hadoop.hbase.mapreduce.RowCounter vaas_dwm:DWM_TRIP_PART

使用postMan调试接口出现 Content type ‘multipart/form-data;charset=UTF-8‘ not supported“

使用postMan调试接口出现 Content type multipart/form-data;charsetUTF-8 not supported" 问题原因解决方案 最近好久没写springboot项目了,然后写了一个添加用户的接口,使用postman测试时出现了问题。如下图: org.springfr…

HttpServletRequest对象与RequestDispatcher对象

一、HttpServletRequest对象 1.介绍 在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息。由于HTTP请求消息分为请求行、请求消息头和请求消息体三部分,因此,在…

【LVGL】SquareLine Studio入门基础操作

1.SquareLine Studio基础 在这篇文章中将介绍SquareLine Studio的基础操作、解释如何加载一个项目、布局结构。    启动软件后,可以加载之前的项目、创建项目、加载一个示例。    这里以打开示例audio_mixer为例,可以双击该项目打开或者选中该项目点击右下角的【创建】按…