神经网络:激活函数
在计算机视觉中,激活函数是神经网络中的一种非线性函数,用于引入非线性变换和非线性特性到网络中。激活函数的作用、原理和意义如下:
1. 引入非线性变换:
神经网络的线性组合层(如卷积层和全连接层)只能表示线性关系,而计算机视觉任务通常涉及到复杂的非线性问题,如图像的边缘、纹理、形状等特征。激活函数通过对输入进行非线性变换,使网络能够学习和表示更加复杂的函数关系。
2. 增加网络的表达能力:
线性函数的组合仍然是线性函数,无法表示复杂的非线性关系。激活函数的引入扩展了网络的表达能力,使神经网络能够对输入数据进行非线性映射和特征提取,从而更好地捕捉和表示输入数据的复杂性。
3. 激活神经元:
激活函数的名称来源于它对神经元的激活过程。激活函数接收神经元的输入信号,通过非线性变换产生输出,从而决定神经元是否激活并传递信号给下一层。通过激活函数的作用,神经网络可以在不同层之间建立复杂的连接和信息传递。
4. 解决线性不可分问题:
计算机视觉中的很多任务,如图像分类、目标检测和图像分割,涉及到非线性的决策边界。激活函数的引入使得神经网络可以学习和表示这些非线性边界,从而提高了模型的分类性能和准确度。
从数学原理的角度来看,激活函数通过对输入进行非线性变换,引入非线性性质到神经网络中。这是因为线性函数的组合仍然是线性函数,无法表示复杂的非线性关系。激活函数通过增加非线性变换,使得神经网络能够学习和表示更加复杂的函数关系,提高模型的拟合能力和表达能力。
总之,激活函数在计算机视觉中的作用、原理和意义是通过引入非线性变换,增加网络的表达能力,激活神经元并解决线性不可分问题,使神经网络能够更好地适应和处理复杂的视觉任务。不同的激活函数具有不同的特性和优缺点,需要结合具体任务和网络结构进行选择和调整。
常见的激活函数包括:
1. Sigmoid函数:
- 公式:f(x) = 1 / (1 + exp(-x))
- 优点:输出值范围在(0, 1)之间,可以用作二分类问题的激活函数。
- 缺点:Sigmoid函数在输入较大或较小的情况下,梯度接近于0,导致梯度消失问题。
2. Tanh函数:
- 公式:f(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x))
- 优点:输出值范围在(-1, 1)之间,相对于Sigmoid函数具有更大的动态范围。
- 缺点:仍然存在梯度消失问题。
3. ReLU函数(Rectified Linear Unit):
- 公式:f(x) = max(0, x)
- 优点:计算简单,能够在输入为正时保持梯度,有效解决梯度消失问题。
- 缺点:在输入为负时,梯度为0,导致神经元无法更新。
4. LeakyReLU函数:
- 公式:f(x) = max(ax, x),其中a为小于1的超参数
- 优点:在输入为负时引入了一个小的斜率,解决了ReLU函数的负值问题。
- 缺点:相对于ReLU函数计算略复杂。
5. ELU函数(Exponential Linear Unit):
- 公式: f(x) = x (if x > 0), f(x) = a * (exp(x) - 1) (if x <= 0,其中a为小于1的超参数)
- 优点:在输入为负时引入了一个负饱和度,解决了ReLU函数的负值问题。
- 缺点:计算较复杂。
下面是使用PyTorch绘制激活函数的图像和相应的代码示例:
import torch
import torch.nn.functional as F
import matplotlib.pyplot as plt
import numpy as npx = torch.linspace(-5, 5, 100)
y_sigmoid = torch.sigmoid(x)
y_tanh = torch.tanh(x)
y_relu = F.relu(x)
y_leaky_relu = F.leaky_relu(x, negative_slope=0.2)
y_elu = F.elu(x, alpha=1.0)plt.figure(figsize=(10, 6))
plt.plot(x.numpy(), y_sigmoid.numpy(), label='Sigmoid')
plt.plot(x.numpy(), y_tanh.numpy(), label='Tanh')
plt.plot(x.numpy(), y_relu.numpy(), label='ReLU')
plt.plot(x.numpy(), y_leaky_relu.numpy(), label='LeakyReLU')
plt.plot(x.numpy(), y_elu.numpy(), label='ELU')
plt.legend()
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title('Activation Functions')
plt.grid(True)
plt.show()
运行上述代码将绘制出激活函数的图像,可视化它们的形状和特点。请注意,PyTorch中的激活函数可以通过torch.nn.functional模块中的函数调用来实现。
下面是在PyTorch框架中使用这些激活函数的代码示例:
import torch
import torch.nn as nn# 创建一个带有激活函数的模型
class MyModel(nn.Module):def __init__(self):super(MyModel, self).__init__()self.fc = nn.Linear(10, 5) # 全连接层self.sigmoid = nn.Sigmoid() # Sigmoid激活函数self.tanh = nn.Tanh() # Tanh激活函数self.relu = nn.ReLU() # ReLU激活函数self.leaky_relu = nn.LeakyReLU(negative_slope=0.2) # LeakyReLU激活函数self.elu = nn.ELU(alpha=1.0) # ELU激活函数def forward(self, x):x = self.fc(x)x = self.sigmoid(x)x = self.tanh(x)x = self.relu(x)x = self.leaky_relu(x)x = self.elu(x)return x# 创建一个输入张量
input_tensor = torch.randn(1, 10)# 实例化模型并进行前向传播
model = MyModel()
output = model(input_tensor)print(output)
以上代码展示了如何在PyTorch中使用不同的激活函数。您可以根据实际需求选择适合的激活函数来构建您的模型。
相关文章:
神经网络:激活函数
在计算机视觉中,激活函数是神经网络中的一种非线性函数,用于引入非线性变换和非线性特性到网络中。激活函数的作用、原理和意义如下: 1. 引入非线性变换: 神经网络的线性组合层(如卷积层和全连接层)只能表…...
图像色彩增强相关论文阅读-Representative Color Transform for Image Enhancement(ICCV2021)
文章目录 Representative Color Transform for Image EnhancementAbstractIntroductionRelated workMethod实验Conclusion Representative Color Transform for Image Enhancement 作者:Hanul Kim1, Su-Min Choi2, Chang-Su Kim3, Yeong Jun Koh 单位:S…...
Elasticsearch介绍与应用
Elasticsearch介绍与应用 Elasticsearch的官方文档。 Elasticsearch官网参考文档:https://www.elastic.co/guide/index.html Elasticsearch官方下载地址:https://www.elastic.co/cn/downloads/elasticsearch mvnrepository依赖库地址:http…...
JavaEE规范
Servlet:用于开发 Web 应用程序的 API,定义了处理 HTTP 请求和响应的方式。JSP(JavaServer Pages):一种在服务器端生成动态网页的技术,允许将 Java 代码嵌入到 HTML 页面中。(注意JSP本质就是一个Servlet)J…...
嵌入式实时操作系统的设计与开发New(八)
创建线程 用户在基于RTOS开发应用程序前,首先要创建线程。 用户创建一个线程时须指定用户希望采用的调度策略。 例如,用户想创建一个周期性执行的线程: acoral_period_policy_data_t* data; data acoral_malloc(sizeof(acoral_period_poli…...
MySQL事务相关笔记
杂项 InnoDB最大特点:支持事务和行锁; MyISAM不支持事务 介绍 一个事务是由一条或者多条对数据库操作的SQL语句所组成的一个不可分割的单元,只有当事务中的所有操作都正常执行完了,整个事务才会被提交给数据库。事务有如下特性…...
如何利用AI高效率快速调色
在设计行业中,时间是非常宝贵的资源,而设计师们常常需要应对繁忙的工作日程和紧迫的截止日期。为了提高工作效率和节省时间,越来越多的设计师开始利用人工智能(AI)技术中的高效调色功能。本文将介绍如何利用AI高效率快…...
数据结构--顺序表的基本操作--插入 and 删除
数据结构–顺序表的基本操作–插入 顺序表的插入操作 实现目标 ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。 typedef struct {int data[MaxSize];int len; }Sqlist;代码实现: #include <stdio.h> #include <stdlib.h> …...
BCSP-玄子Java开发之Java Web编程CH01_初识动态网页
BCSP-玄子Java开发之Java Web编程CH01_初识动态网页 1.1 B/S架构 B/S架构:浏览器/服务器 程序完全部署在服务器上使用浏览器访问服务器无需单独安装客户端软件 为什么要使用B/S架构 B/S与C/S比较B/S架构C/S架构软件安装浏览器需要专门的客户端应用升级维护客户…...
【软件教程】农林生环、水文、海洋、水环境、大气科学、人工智能、碳中和、碳排放、3S、R与统计等软件模型
本文涉及领域水文水资源、大气科学、农林生态、地信遥感、统计分析、编程语言等... 从软件基础到实践案例应用操作,手把手教学,提供永久回放观看和助学群长期辅助指导。适合课题组人员一站式学习,科研人员技术提升、企业单位工程项目、高校论…...
如何加入开源社
开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、项目孵化” 为使命的开源社区联合体。开源社积极…...
软件开发中的破窗效应
应该有很多人已经知道破窗效应【注1】这个社会学 (犯罪学)的词语,破窗效应最先由社会学家James Q. Wilson和George L. Kelling在一篇名为《Broken Windows》的文章中提出【注2】: “一个房子如果窗户破了,没有人去修补…...
机器视觉初步6-1:基于梯度的图像分割
把基于梯度的图像分割单独拿出来。 文章目录 一、图像梯度相关算子的原理1. Sobel算子2. Prewitt算子3. Roberts算子 二、python和halcon算子实现1.python实现2.halcon实现 基于梯度的图像分割方法利用像素之间的梯度信息来进行图像分割。 梯度 1是图像中像素灰度值变化最快的…...
从0开始,精通Go语言Rest微服务架构和开发
说在前面 现在拿到offer超级难,甚至连面试电话,一个都搞不到。 尼恩的技术社区中(50),很多小伙伴凭借 “左手云原生右手大数据”的绝活,拿到了offer,并且是非常优质的offer,据说年…...
Sui x KuCoin Labs夏季黑客松|本周Workshop预告
自Sui x KuCoin Labs夏季黑客松推出以来已有四周的时间,期间收获了众多开发者的积极报名和热情参与。随着黑客松报名即将进入尾声,同期举办的Workshop也迎来了本周的最后一波。本周的黑客松Workshop邀请到MoveEX和Mirror World的负责人作为嘉宾为大家带…...
从电源 LED 读取智能手机的秘密?
研究人员设计了一种新的攻击方法,通过记录读卡器或智能手机打开时的电源 LED,使用 iPhone 摄像头或商业监控系统恢复存储在智能卡和智能手机中的加密密钥。 众所周知,这是一种侧信道攻击。 通过密切监视功耗、声音、电磁辐射或执行操作所需…...
【Linux编辑器-vim使用】
目录 Linux编辑器-vim使用1.vim的基本概念2.vim的基本操作3.vim正常模式命令集4.vim末行模式命令集 Linux编辑器-vim使用 1.vim的基本概念 目前了解的vim有三种模式(其实有好多模式),分别是命令模式、插入模式和底行模式,各模式…...
安装Apache mysql php
目录 一.Apache网站服务 Apache——》静态页面处理——》将静态处理交给PHP Apache简介 安装Apache服务 编辑 安装软件思路 二.安装mysql数据库 1. 安装依赖包 2.创建程序用户管理 3.加压安装包 这边就安装完成了编辑 重点来了 报错了 没有空间 我最后的解决 方法…...
【人工智能】— 神经网络、前向传播、反向传播、梯度下降、局部最小值、多层前馈网络、缓解过拟合的策略
【人工智能】— 神经网络、前向传播、反向传播 前向传播反向传播梯度下降局部最小值多层前馈网络表示能力多层前馈网络局限缓解过拟合的策略 前向传播和反向传播都是神经网络训练中常用的重要算法。 前向传播是指将输入数据从输入层开始经过一系列的权重矩阵和激活函数的计算后…...
小文智能自定义变量详解
在小文交互场景设计时,有一个特殊功能,叫做自定义变量。有时,根据外呼对象的不同,需要对用户传达不同的内容,比如称呼、地址、公司名称等等。此时,就可以使用小文交互的自定义变量功能来实现对不同用户呼出…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...
基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
