目录

自动求导

#encoding=utf8import torch

from torch.autograd import Variable

x = Variable(torch.Tensor([2]), requires_grad=True)

y = x + 2

z = y ** 2 + 3

print z

## 输出tensor([19.], grad_fn=)

z.backward()

## z=(x+2)^2+3==>dz/dx=2(x+2)print x.grad

## 输出tensor([8.])

torch常用操作

torch.nn

torch.nn.AdaptiveLogSoftmaxWithLoss

torch.nn.functional

torch.nn.Conv2d

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

in_channels(int) – 输入信号的通道

out_channels(int) – 卷积产生的通道

kerner_size(int or tuple) - 卷积核的尺寸

stride(int or tuple, optional) - 卷积步长

padding(int or tuple, optional) - 输入的每一条边补充0的层数

dilation(int or tuple, optional) – 卷积核元素之间的间距(空洞卷积时使用)

groups(int, optional) – 从输入通道到输出通道的阻塞连接数

bias(bool, optional) - 如果bias=True,添加偏置

正常的卷积如下:

输入图片的shape是(height, width, in_channels),

filter的shape是(height_f, width_f, in_channels),filter和输入的第三维必须相等。

对于一个filter而言,输出的图片是(height_o, width_o),注意,并没有第三维!!

所谓的outchannels就是filter的个数,所以输出是(height_o, width_o, out_channels)

卷积操作就是,将这个三维的filter(例如3x3x3)与输入图像的对应位置相乘,再将这27个数相加,得到的结果就是output的一个元素。

对于复杂的卷积,假设输入的尺度是\((N, C_{in},H,W)\),输出尺度\((N,C_out,H_out,W_out)\)

\[

out(N_i, C_{out_j})=bias(C_{out_j})+\sum^{C_{in}-1}_{k=0}weight(C_{out_j},k)\bigotimes input(N_i,k)

\]

\(\bigotimes\): 表示二维的相关系数计算 stride: 控制相关系数的计算步长

groups: 控制输入和输出之间的连接:

group=1,输出是所有的输入的卷积;

group=2,此时相当于有并排的两个卷积层,每个卷积层计算输入通道的一半,并且产生的输出是输出通道的一半,随后将这两个输出连接起来。

参数kernel_size,stride,padding,dilation也可以是一个int的数据,此时卷积height和width值相同;也可以是一个tuple数组,tuple的第一维度表示height的数值,tuple的第二维度表示width的数值

shape:

input: \((N,C_{in},H_{in},W_{in})\)

output: \((N,C_{out},H_{out},W_{out})\)

\(H_{out}=floor((H_{in}+2padding[0]-dilation[0](kernerl\_size[0]-1)-1)/stride[0]+1)\)

\(W_{out}=floor((W_{in}+2padding[1]-dilation[1](kernerl\_size[1]-1)-1)/stride[1]+1)\)

torch.nn.MaxPool2d

torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

pooling的基本思想,与卷积的运算基本一样,区别在于,filter和原图像做的不是卷积操作,而是对原图像的filter大小的区域做max/min之类的操作,而且filter并没有第三维,输入和输出的第三维是一样的。

针对pooling,并没有需要学习的参数。

如果输入的大小是(N,C,H,W),那么输出的大小是(N,C,H_out,W_out)和池化窗口大小(kH,kW)的关系是:

\[

out(N_i, C_j,k)=\max^{kH-1}_{m=0}\max^{kW-1}_{m=0}input(N_{i},C_j,stride[0]h+m,stride[1]w+n)

\]

如果padding不是0,会在输入的每一边添加相应数目0

参数kernel_size,stride, padding,dilation数据类型: 可以是一个int类型的数据,此时卷积height和width值相同; 也可以是一个tuple数组(包含来两个int类型的数据),第一个int数据表示height的数值,tuple的第二个int类型的数据表示width的数值

kernel_size(int or tuple) - max pooling的窗口大小

stride(int or tuple, optional) - max pooling的窗口移动的步长。!!!!默认值是kernel_size!!!!!!

padding(int or tuple, optional) - 输入的每一条边补充0的层数

dilation(int or tuple, optional) – 一个控制窗口中元素步幅的参数

return_indices - 如果等于True,会返回输出最大值的序号,对于上采样操作会有帮助

ceil_mode - 如果等于True,计算输出信号大小的时候,会使用向上取整,代替默认的向下取整的操作

shape:

输入: \((N,C,H_{in},W_{in})\)

输出: \((N,C,H_{out},W_{out})\)

\(H_{out}=floor((H_{in} + 2padding[0] - dilation[0](kernel\_size[0] - 1) - 1)/stride[0] + 1\)

\(W_{out}=floor((W_{in} + 2padding[1] - dilation[1](kernel\_size[1] - 1) - 1)/stride[1] + 1\)

torch.nn.Embedding

https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-nn/#sparse-layers。一个保存了固定字典和大小的简单查找表。这个模块常用来保存词嵌入和用下标检索它们。模块的输入是一个下标的列表,输出是对应的词嵌入。torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2, scale_grad_by_freq=False, sparse=False)。

num_embeddings:嵌入字典的大小。

embedding_dim:每个嵌入向量的大小。

padding_idx:如果提供的话,输出遇到此下标时用零填充。

max_norm:如果提供的话,会重新归一化词嵌入,使它们的范数小于提供的值。

norm_type:对于max_norm选项计算p范数时的p。

scale_grad_by_freq:如果提供的话,会根据字典中单词频率缩放梯度。

torch

torch.addmm

对矩阵mat1和mat2进行矩阵乘操作(用@表示)。矩阵mat加到最终结果。out=(beta∗M)+(alpha∗mat1@mat2)。torch.addmm(beta=1, mat, alpha=1, mat1, mat2, out=None)

torch.mm

对矩阵mat1和mat2进行相乘。torch.mm(mat1, mat2, out=None)

torch.bmm

对存储在两个批batch1和batch2内的矩阵进行批矩阵乘操作。torch.bmm(batch1, batch2, out=None)

用法:

>>> batch1 = torch.randn(10, 3, 4)

>>> batch2 = torch.randn(10, 4, 5)

>>> res = torch.bmm(batch1, batch2)

>>> res.size()

torch.Size([10, 3, 5])

torch.unsqueeze

返回一个新的张量,对输入的指定位置插入维度1。注意: 返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。

用法:

>>> max_len=10

>>> position = torch.arange(0, max_len).float().unsqueeze(1)

>>> position

tensor([[0.],

[1.],

[2.],

[3.],

[4.],

[5.],

[6.],

[7.],

[8.],

[9.]])

>>> position = torch.arange(0, max_len).float().unsqueeze(0)

>>> position

tensor([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]])

>>>

torch.Tensor

view

view(*args): 返回一个有相同数据但大小不同的tensor。 返回的tensor必须有与原tensor相同的数据和相同数目的元素,但可以有不同的大小。(类似reshape)

masked_fill_

masked_fill_(mask, value): 在mask值为1的位置处用value填充。mask的元素个数需和本tensor相同,但尺寸可以不同。

add函数 pytorch_pytorch常用函数相关推荐

  1. oracle共享函数,oracle常用函数及示例分享

    oracle很多常用的函数如果了解的话可以加速开发,原本想总结下自己工作中使用oracle函数的一些场景,后发现川哥哥的博客总结的很好,为了方便查询函数就转摘过来. 总结的很不错,简单易懂,没什么事就 ...

  2. PHP 常用函数 - 其他常用函数

    PHP 常用函数 PHP 常用函数 - 字符串函数 PHP 常用函数 - 数组函数 PHP 常用函数 - 数学函数 PHP 常用函数 - 目录.文件函数 PHP 常用函数 - 其他常用函数 文章目录 ...

  3. python常用函数import_python 常用函数集合

    1.常用函数 round() :  四舍五入 参数1:要处理的小数 参数2:可选,如果不加,就是不要小数,如果加,就是保留几位小数 abs() :绝对值函数 max() :列表.字符串,得到最大的元素 ...

  4. matlab doc函数,matlab常用函数.doc

    matlab常用函数.doc MatLab 常用函数 1. 特殊变量与常数 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 name ...

  5. python常用函数-python常用函数精讲

    原标题:python常用函数精讲 返回值为bool类型的函数 bool是Boolean的缩写,只有真(True)和假(False)两种取值 bool函数只有一个参数,并根据这个参数的值返回真或者假. ...

  6. python常用函数-python常用函数与用法示例

    本文实例讲述了python常用函数与用法.分享给大家供大家参考,具体如下: 自定义函数实例 # 定义一个函数 def printme( str ): "打印任何传入的字符串" pr ...

  7. 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数

    函数式编程其实就是按照数学上的函数运算思想来实现计算机上的运算.虽然我们不需要深入了解数学函数的知识,但应该清楚函数式编程的基础是来自于数学. 例如数学函数f(x) = x^2+x,并没有指定返回值的 ...

  8. datastage 函数_DataStage常用函数大全

    1 / 38 DataStage 常用函数大全 DATASTAGE 常用函数大全 . ......................................................... ...

  9. php不用于输出的函数,PHP常用函数和常见疑难问题解答

    首先介绍下比较简单但必不可少且实用的知识,可以当手册查询,适合像我一样的新手看. PHP常用库函数介绍 一.PHP字符串操作常用函数1.确定字符串长度 int strlen(string str) 2 ...

最新文章

  1. 手撸一个npm包,安利一下duiba-sprite
  2. Javascript刷新全集
  3. linux中一些简便的命令之wc
  4. groovy怎样从sql语句中截取表名_《SQL基础教程》学习笔记
  5. 高并发系统处理之——限流
  6. tensorflow综合示例1:tensorflow-keras的基本使用方式
  7. spark 简单实战_SparkCore入门实战 (二)
  8. ADOMD.net概述
  9. 《SAS编程与数据挖掘商业案例》学习笔记之九
  10. (转)递归算法的时间复杂度终结篇与Master method
  11. WPF自定义控件与样式-自定义按钮(Button)
  12. 监测系统的cpu,物理内存,磁盘的使用
  13. java文件上传,返回访问url
  14. c语言中floor有什么作用,floor函数?floor函数的使用方法?ceil函数?C语言 floor 函数...
  15. VS2015基础开发流程
  16. css3 calc的使用
  17. HIVESERVER2 服务启动失败
  18. 蛙蛙推荐:蛙蛙教你发明一种新语言之一--词法分析和语法分析
  19. 《干法》喜欢的金句(一)
  20. Vue 实现图片拖拽功能

热门文章

  1. linux安装PHP环境
  2. CSS 定位之绝对与相对
  3. DFS产生的ID=13562事件
  4. 李春平:钱不是奥黛莉赫本给的
  5. linux shell脚本 引入外部shell文件
  6. python3 实现 php serialize 函数
  7. cmake CMakeLists.txt 命令 add_compile_options、add_definitions、target_compile_definitions、build_command
  8. mysql注入中的outfile、dumpfile、load_file函数详解
  9. linux 内核 struct file_operations中 ioctl 变为 unlocked_ioctl
  10. iconv文件编码判断转换