Pytorch教程目录

Torch and Numpy
变量 (Variable)
激励函数
关系拟合(回归)
区分类型 (分类)
快速搭建法
批训练
加速神经网络训练
Optimizer优化器
卷积神经网络 CNN
卷积神经网络(RNN、LSTM)
RNN 循环神经网络 (分类)
RNN 循环神经网络 (回归)
自编码 (Autoencoder)
DQN 强化学习
生成对抗网络 (GAN)
为什么 Torch 是动态的
GPU 加速运算
过拟合 (Overfitting)
批标准化 (Batch Normalization)


目录

  • Pytorch教程目录
  • 什么是激励函数
    • 非线性方程
    • 激励函数
  • 激励函数
    • 什么是 Activation
    • Torch 中的激励函数
      • torch.linspace
  • 全部代码:

什么是激励函数

非线性方程

激励函数也就是为了解决我们日常生活中 不能用线性方程所概括的问题. 那么. 什么是线性方程 (linear function)?

说到线性方程, 我们不得不提到另外一种方程, 非线性方程 (nonlinear function). 我们假设, 女生长得越漂亮, 越多男生爱. 这就可以被当做一个线性问题. 但是如果我们假设这个场景是发生在校园里. 校园里的男生数是有限的, 女生再漂亮, 也不可能会有无穷多的男生喜欢她. 所以这就变成了一个非线性问题.

然后我们就可以来讨论如何在神经网络中达成我们描述非线性的任务了. 我们可以把整个网络简化成这样一个式子. Y = Wx, W 就是我们要求的参数, y 是预测值, x 是输入值. 用这个式子, 我们很容易就能描述刚刚的那个线性问题, 因为 W 求出来可以是一个固定的数. 不过这似乎并不能让这条直线变得扭起来 , 激励函数见状, 拔刀相助, 站出来说道: “让我来掰弯它!”.

激励函数

y=AF(Wx)y=AF(Wx)y=AF(Wx)
AF={reLusigmoidtanh...AF=\begin{cases} reLu \\ sigmoid \\ tanh \\ ... \end{cases}AF=⎩⎪⎪⎪⎨⎪⎪⎪⎧​reLusigmoidtanh...​

这里的 AF 就是指的激励函数. 激励函数拿出自己最擅长的”掰弯利器”, 套在了原函数上 用力一扭, 原来的 Wx 结果就被扭弯了.

想要恰当使用这些激励函数, 还是有窍门的. 比如当你的神经网络层只有两三层, 不是很多的时候, 对于隐藏层, 使用任意的激励函数, 随便掰弯是可以的, 不会有特别大的影响. 不过, 当你使用特别多层的神经网络, 在掰弯的时候, 万万不得随意选择利器. 因为这会涉及到梯度爆炸, 梯度消失的问题.

  • 少量层结构中, 我们可以尝试很多种不同的激励函数.
  • 卷积神经网络 Convolutional neural networks 的卷积层中, 推荐的激励函数是 relu.
  • 循环神经网络中 recurrent neural networks, 推荐的是 tanh 或者是 relu

激励函数

什么是 Activation

一句话概括 Activation: 就是让神经网络可以描述非线性问题的步骤, 使神经网络变得更强大.

Torch 中的激励函数

Torch 中的激励函数有很多, 不过我们平时要用到的就这几个. relu, sigmoid, tanh, softplus. 那我们就看看他们各自长什么样啦.

import torch
import torch.nn.functional as F     # 激励函数都在这
from torch.autograd import Variable# 做一些假数据来观看图像
x = torch.linspace(-5, 5, 200)  # x data (tensor), shape=(100, 1)
x = Variable(x)

torch.linspace

torch.linspace(start, end, steps=100, out=None) → Tensor

返回一个1维张量,包含在区间startend上均匀间隔的steps个点。

输出张量的长度由steps决定。

参数:

  • start (float) - 区间的起始点

  • end (float) - 区间的终点

  • steps (int) - 在start和end间生成的样本数

  • out (Tensor, optional) - 结果张量

例子:

#生成0到10的4个数构成的等差数列
a = torch.linspace(0,10,steps=4)
print(a)#生成0到10的5个数构成的等差数列
b = torch.linspace(0,10,steps=5)
print(b)tensor([ 0.0000,  3.3333,  6.6667, 10.0000])
tensor([ 0.0000,  2.5000,  5.0000,  7.5000, 10.0000])

接着就是做生成不同的激励函数数据:

x_np = x.data.numpy()   # 换成 numpy array, 出图时用# 几种常用的 激励函数
y_relu = F.relu(x).data.numpy()
y_sigmoid = F.sigmoid(x).data.numpy()
y_tanh = F.tanh(x).data.numpy()
y_softplus = F.softplus(x).data.numpy()
# y_softmax = F.softmax(x)  softmax 比较特殊, 不能直接显示, 不过他是关于概率的, 用于分类

接着我们开始画图, 画图的代码也在下面:

import matplotlib.pyplot as plt  plt.figure(1, figsize=(8, 6))
plt.subplot(221)
plt.plot(x_np, y_relu, c='red', label='relu')
plt.ylim((-1, 5))
plt.legend(loc='best')plt.subplot(222)
plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')
plt.ylim((-0.2, 1.2))
plt.legend(loc='best')plt.subplot(223)
plt.plot(x_np, y_tanh, c='red', label='tanh')
plt.ylim((-1.2, 1.2))
plt.legend(loc='best')plt.subplot(224)
plt.plot(x_np, y_softplus, c='red', label='softplus')
plt.ylim((-0.2, 6))
plt.legend(loc='best')plt.show()

全部代码:

import torch
import torch.nn.functional as F
from torch.autograd import Variable
import matplotlib.pyplot as plt# fake data
x = torch.linspace(-5, 5, 200)  # x data (tensor), shape=(100, 1)
x = Variable(x)
x_np = x.data.numpy()   # numpy array for plotting# following are popular activation functions
y_relu = torch.relu(x).data.numpy()
y_sigmoid = torch.sigmoid(x).data.numpy()
y_tanh = torch.tanh(x).data.numpy()
y_softplus = F.softplus(x).data.numpy() # there's no softplus in torch
# y_softmax = torch.softmax(x, dim=0).data.numpy() softmax is a special kind of activation function, it is about probability# plt to visualize these activation function
plt.figure(1, figsize=(8, 6))
plt.subplot(221)
plt.plot(x_np, y_relu, c='red', label='relu')
plt.ylim((-1, 5))
plt.legend(loc='best')plt.subplot(222)
plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')
plt.ylim((-0.2, 1.2))
plt.legend(loc='best')plt.subplot(223)
plt.plot(x_np, y_tanh, c='red', label='tanh')
plt.ylim((-1.2, 1.2))
plt.legend(loc='best')plt.subplot(224)
plt.plot(x_np, y_softplus, c='red', label='softplus')
plt.ylim((-0.2, 6))
plt.legend(loc='best')plt.show()

【Pytorch教程】:激励函数相关推荐

  1. 【深度学习】Github上标星1.1W的PyTorch教程,我们给您搬来了

    之前给大家推过TensorFlow的入门教程,大家纷纷表示"搞研究用PyTorch它不香嘛?" 行,那说干就干.我们马上去Github上,给大家搬来了一本开源的PyTorch教程& ...

  2. YDOOK:Pytorch教程:转置矩阵 转置张量 T

    YDOOK:Pytorch教程:转置矩阵 转置张量 T © YDOOK Jinwei Lin, shiye.work import torch import numpy as npt = torch. ...

  3. pytorch教程 聊天机器人(详细注释attentionrnn输入输出shape等知识点...

    最近可能要用到seq2seq模型去解决一些轨迹预测的问题,拿pytorch教程的聊天机器人练了练手. 原文中教程已经写的比较详尽了,在此对原文教程进行一些补充说明,可能更加方便向我这样的小白入门学习. ...

  4. YDOOK:Pytorch教程:tensor 张量内各个值同时相加一个数

    YDOOK:Pytorch教程:tensor 张量内各个值同时相加一个数 © YDOOK Jinwei Lin, shiye.work import torch import numpy as npt ...

  5. python2.7安装pytorch_Pytorch如何安装,Linux安装Pytorch,OSX安装Pytorch教程

    Pytorch目前提供了Linux,Mac Os安装,官方提供了自定义安装方法,今天我们汇总一下Pytorch如何安装,Linux安装Pytorch,OSX安装Pytorch教程以及我们可以根据PIP ...

  6. Stanford CS224N: PyTorch Tutorial (Winter ‘21) —— 斯坦福CS224N PyTorch教程 (第二部分)

    本教程译文的第一部分,请见我的上一篇博文: Stanford CS224N: PyTorch Tutorial (Winter '21) -- 斯坦福CS224N PyTorch教程 (第一部分)_放 ...

  7. YDOOK:Pytorch教程:tensor 张量内各个元素之和 相加值输出

    YDOOK:Pytorch教程:tensor 张量内各个元素之和 相加值输出 © YDOOK Jinwei Lin, shiye.work import torch import numpy as n ...

  8. YDOOK:Pytorch教程:tensor 张量相乘 矩阵相乘

    YDOOK:Pytorch教程:tensor 张量相乘 矩阵相乘 © YDOOK Jinwei Lin, shiye.work import torch import numpy as npt = t ...

  9. 【小白学习PyTorch教程】六、基于CIFAR-10 数据集,使用PyTorch 从头开始​​构建图像分类模型...

    「@Author:Runsen」 图像识别本质上是一种计算机视觉技术,它赋予计算机"眼睛",让计算机通过图像和视频"看"和理解世界. 在开始阅读本文之前,建议先 ...

  10. 【小白学习PyTorch教程】十六、在多标签分类任务上 微调BERT模型

    @Author:Runsen BERT模型在NLP各项任务中大杀四方,那么我们如何使用这一利器来为我们日常的NLP任务来服务呢?首先介绍使用BERT做文本多标签分类任务. 文本多标签分类是常见的NLP ...

最新文章

  1. js同时打开两个连接
  2. java中example函数作用_MyBatis逆向工程中的Mapper接口以及Example的实例函数及详解...
  3. 解决linux下oracle进入sqlplus环境中后退键显示^H、上下键无效与ctrl+l无法清屏等问题【weber出品必属精品】...
  4. RuntimeError: Found dtype Double but expected Float”
  5. 【爬坑】Vim 文档加密 解密
  6. 【Java】深入探讨Java数值舍入问题
  7. ant vue 树形菜单横向显示_快速实现一个简单可复用可扩展的Vue树组件
  8. 页面库无法捕获到Added事件?
  9. 国脉信息学院计算机网络,福建工程学院国脉信息学院《计算机网络模拟题》
  10. Tomcat下work文件夹的作用
  11. 什么是PHP,如何快速运行PHP文件
  12. 开设计算机专业设置问卷调查,计算机信息管理专业调查问卷 (1)
  13. 影视APP下载页面html源码
  14. wps word设置多级标题及对应目录
  15. 【Multisim仿真】LM317-337双路输出可调直流稳压电源电路
  16. Asterisk Configuration for ARI
  17. Python+Appium【第三章】Adb元素定位
  18. 零基础入门学习Python(23)--递归:这帮小兔崽子
  19. mysql_row百度百科_MySQL
  20. C++中string.find()函数与string::npos

热门文章

  1. idea启动报错: Failed to create JVM.JVM.Path XXXXXXX\jbr\
  2. 结构梁配筋最牛插件_结构工程师应该了解的一些基本概念知识
  3. 哈密顿图、哈密顿回路
  4. iOS 视频播放器旋转问题小结
  5. 大嘴首发J2EE框架,Bigmouth-framework你值得拥有!
  6. DMS文档内容管理系统
  7. 译文伪原创的全文翻译软件
  8. Charles进行弱网测试
  9. 【安卓】悬浮球源代码(长按判断、多次点击判断、自动贴边)
  10. CenterOS7安装redis