Pytorch-tensor的激活函数
1.激活函数
激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题。因为很多问题都不是线性的,你只有给它加入一些非线性因素,就能够让问题更好的解决。
函数1:RELU():
优点:
- 1.相比起Sigmoid和tanh,在SGD中能够快速收敛。
- 2.有效缓解了梯度弥散的问题。

a=torch.linspace(-1,1,10)
print(a)
# relu()小于0的都归为0,大于0的成线性
print(torch.relu(a))
输出结果
tensor([-1.0000, -0.7778, -0.5556, -0.333
3, -0.1111, 0.1111, 0.3333, 0.5556,
0.7778, 1.0000])
tensor([0.0000, 0.0000, 0.0000, 0.0000, 0
.0000, 0.1111, 0.3333, 0.5556, 0.7778,
1.0000])
函数2:Sigmoid():
优点:
- 1.Sigmoid函数的输出映射在之间,单调连续,输出范围有限,优化稳定,可以用作输出层。
- 2.求导比较容易。
缺点:
- 1.在两个极端,容易出现梯度弥散。
- 2.其输出并不是以0为中心的。

a=torch.linspace(-100,100,10)
print(a)
# relu()小于0的都归为0,大于0的成线性
print(torch.sigmoid(a))
输出结果
tensor([-100.0000, -77.7778, -55.5556,
-33.3333, -11.1111, 11.1111,
33.3333, 55.5556, 77.7778,
100.0000])
tensor([0.0000e+00, 1.6655e-34, 7.4564e-2
5, 3.3382e-15, 1.4945e-05, 9.9999e-01,
1.0000e+00, 1.0000e+00, 1.0000e+0
0, 1.0000e+00])
函数3:Tanh():
优点:
- 1.比Sigmoid函数收敛速度更快。
- 2.相比Sigmoid函数,其输出以0为中心。
缺点:
- 仍然存在由于饱和性产生的梯度弥散。

a=torch.linspace(-10,10,10)
print(a)
# relu()小于0的都归为0,大于0的成线性
print(torch.tanh(a))
输出结果
tensor([-10.0000, -7.7778, -5.5556, -3
.3333, -1.1111, 1.1111, 3.3333,
5.5556, 7.7778, 10.0000])
tensor([-1.0000, -1.0000, -1.0000, -0.997
5, -0.8045, 0.8045, 0.9975, 1.0000,
1.0000, 1.0000])
函数4:Softmax():
softmax通俗理解的大体意思就是,Z1,Z2,,,Zn中,所有的值,先进行一个e^Zi变换,得到yi,然后在除以所有yi的累加和,得到每个值在整个数组中的比重。经过一次sofymax()函数之后,会放大值与值之间的比例,例如图中的Z1,Z2,经过softmax函数之前,是3:1,经过之后,就变成了0.88:0.12。
作用:将张量的每个元素缩放到(0,1)区间且和为1
下图详细讲解了softmax是怎么计算的,图源于网络。

图中例子代码实现如下:
import torch
import torch.nn.functional as F
if __name__ == '__main__':
data=torch.tensor([3.0,1.0,-3.0])
print(data)
y=F.softmax(data,dim=0)
print(y)
输出结果
tensor([ 3., 1., -3.])
tensor([0.8789, 0.1189, 0.0022])
2维tensor进行softmax例子代码实现如下:
import torch
import torch.nn.functional as F
if __name__ == '__main__':
data=torch.rand(2,3)
print(data)
y=F.softmax(data,dim=1)
# dim=0,就是在1维上进行softmax,也就是在列上进行
# dim=1,就是在2维上进行softmax,也就是在行上进行
print(y)
输出结果
tensor([[0.1899, 0.3969, 0.8333],
[0.9149, 0.8438, 0.4973]])
tensor([[0.2420, 0.2976, 0.4604],
[0.3861, 0.3596, 0.2543]])
Pytorch-tensor的激活函数的更多相关文章
- Pytorch Tensor 常用操作
https://pytorch.org/docs/stable/tensors.html dtype: tessor的数据类型,总共有8种数据类型,其中默认的类型是torch.FloatTensor, ...
- Pytorch Tensor, Variable, 自动求导
2018.4.25,Facebook 推出了 PyTorch 0.4.0 版本,在该版本及之后的版本中,torch.autograd.Variable 和 torch.Tensor 同属一类.更确切地 ...
- pytorch tensor与numpy转换
从官网拷贝过来的,就是做个学习记录.版本 0.4 tensor to numpy a = torch.ones(5) print(a) 输出 tensor([1., 1., 1., 1., 1.]) ...
- pytorch 3 activation 激活函数
2.3 Activation Function import torch import torch.nn.functional as F from torch.autograd import Vari ...
- pytorch tensor 维度理解.md
torch.randn torch.randn(*sizes, out=None) → Tensor(张量) 返回一个张量,包含了从标准正态分布(均值为0,方差为 1)中抽取一组随机数,形状由可变参数 ...
- pytorch tensor的索引与切片
切片方式与numpy是类似. * a[:2, :1, :, :], * 可以用-1索引. * ::2,表示所有数据,间隔为2,即 start:end:step. * a.index_select(1 ...
- Pytorch Tensor 维度的扩充和压缩
维度扩展 x.unsqueeze(n) 在 n 号位置添加一个维度 例子: import torch x = torch.rand(3,2) x1 = x.unsqueeze(0) # 在第一维的位置 ...
- 【Code】numpy、pytorch实现全连接神经网络
""" 利用numpy实现一个两层的全连接网络 网络结构是:input ->(w1) fc_h -> relu ->(w2) output 数据是随机出 ...
- Pytorch(一)
一.Pytorch介绍 Pytorch 是Torch在Python上的衍生物 和Tensorflow相比: Pytorch建立的神经网络是动态的,而Tensorflow建立的神经网络是静态的 Tens ...
- [炼丹术]使用Pytorch搭建模型的步骤及教程
使用Pytorch搭建模型的步骤及教程 我们知道,模型有一个特定的生命周期,了解这个为数据集建模和理解 PyTorch API 提供了指导方向.我们可以根据生命周期的每一个步骤进行设计和优化,同时更加 ...
随机推荐
- java.lang.Long cannot be cast to java.util.Map-Oracle查询异常处理
Map<String, Object> map一.问题由来 测试环境中进行测试时,某一个接口频繁报一个错,java.lang.Long cannot be cast to java.uti ...
- mockjs 前端写完 给后台调 mock.js | 改到2.0版本
需求:最近活太忙了,实在是联调没有时间了,无奈又拾起来mockjs 1 安装mockjs npm install mockjs // 这是个只在开发的时候用,打包后就没有了,业务更安全 npm ins ...
- 测试打包失败 已解决 分析过程 - 关键字 Jenkins nexus package-lock.json npm install build
Jenkins 打包失败 npm run build 总是失败,每次失败报错还不一样. 然后 npm install 每次安装 还总有包超时 MobaXterm1_CHS1 SSH 链接,手工安装也不 ...
- ida使用入门指北
静态分析 快捷键 操作 作用 空格键 在反汇编窗口中,进行列表视图与图形视图之间的切换 TAB 在反汇编窗口中,进行汇编指令与伪代码之间的切换 Esc 和 Ctrl+Enter 翻页,返回前一页面 G ...
- idea的使用操作
怎么让idea中的方法之间显示横线 点击setting 选择Editor 选择Appearance 选择Show method separators 效果: 如果设置idea的标签页可以多行显示 点击 ...
- java基础 韩顺平老师的 面向对象(中级) 自己记的部分笔记
272,包基本介绍 包的三大作用 1,区分相同的类 2,当类很多时,可以很好的管理类 3,控制访问范围 包基本用法 package com.hspedu; 说明: 1,package 关键字, ...
- 广西首次!3DCAT实时云渲染助力南宁数字气象科普馆上线
11月17日,南宁市气象局举行数字气象科普馆上线发布仪式.目前,以气象为主题的三维虚拟数字气象科普馆在广西尚属首创.17日起,在微信搜索小程序南宁气象科普馆&就能在3DCAT实时云渲染技术助力 ...
- drf(Book序列化练习、user表练习)
一. APIView版本 1. models.py from django.db import models # Create your models here. class CommonField( ...
- windows 10 wsl 环境 docker 无法正常启动 -The system cannot find the file specified
错误信息: error during connect: in the default daemon configuration on Windows, the docker client must b ...
- 记录--Vue中前端导出word文件
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 很多时候在工作中会碰到完全由前端导出word文件的需求,因此特地记录一下比较常用的几种方式. 一.提供一个word模板 该方法提供一个wo ...