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 提供了指导方向.我们可以根据生命周期的每一个步骤进行设计和优化,同时更加 ...
随机推荐
- 基于六轴传感器MPU6050的加速度和角度值读取
一 系统简介 1.简介 MPU-60x0 是全球首例 9 轴运动处理传感器.它集成了 3 轴MEMS陀螺仪,3 轴MEMS加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion ...
- 基于 XAF Blazor 的规则引擎编辑器 - 实战篇
示例项目:https://gitee.com/easyxaf/recharge-rules-engine-sample 前言 继上一篇文章对规则引擎编辑器进行了初步介绍之后,本文将通过实际应用案例深入 ...
- springboot增加slf4j
参考:https://blog.csdn.net/qq_27706119/article/details/104977666(主要) https://www.liaoxuefeng.com/wiki/ ...
- 什么会导致JAVA应用程序的CPU使用率飙升
问题 无限循环的while会导致CPU使用率飙升吗? 经常使用Young GC会导致CPU占用率飙升吗? 具有大量线程的应用程序的CPU使用率是否较高? CPU使用率高的应用程序的线程数是多少? 处于 ...
- rust使用lazy_static对全局变量多线程并发读写示例
首先需要在项目依赖Cargo.toml添加lazy_static依赖项 [dependencies] lazy_static = "1.4.0" 示例代码如下: use lazy_ ...
- C# 按指定宽高缩放图片
/// <summary> /// 按指定宽高缩放图片 /// </summary> /// <param name="image">原图片&l ...
- KingbaseES V8R6 等待事件之IO类BufFileRead BufFileWrite
等待事件含义 当数据库创建临时文件时,会发生IO:BufFileRead和IO:BufFileWrite等待事件.当操作需要的内存比当前定义的work_mem内存参数更多时,会将临时数据写入磁盘永久存 ...
- 巧用dblink 实现多进程并行查询
概述 对于分区表的大数据统计分析,由于数据量巨大,往往需要采用并行.但是数据库并行的效率相比分进程分表统计还是有比较大的差距.本文通过巧用dblink,实现分进程分分区统计数据. 例子 kingbas ...
- xpath解析爱奇艺电影网页数据
1 url='https://list.iqiyi.com/www/1/-------------11-1-1-iqiyi--.html' 2 headers={ 3 'User-Agent':'Mo ...
- 【已解决】linux环境jps命令不显示进程
2021-09-28 10:26:42 问题描述: 输入jps后不显示进程 解决办法 1. cd /tmp/hsperfdata_root/ 2. ls 如果是空的 3. rm -rf hsperfd ...