1)常数初始化:
x = F.normalize(x, p=2, dim=1)按行计算
x = F.normalize(x, p=2, dim=0)按列计算
torch.empty(size)返回形状为size的空tensor
torch.zeros(size)全部是0的tensor
torch.zeros_like(input)返回跟input的tensor一个size的全零tensor
torch.ones(size)全部是1的tensor
torch.ones_like(input)返回跟input的tensor一个size的全一tensor
torch.arange(start=0, end, step=1)返回一个从start到end的序列,可以只输入一个end参数,就跟python的range()一样了。
torch.full(size, fill_value)这个有时候比较方便,把fill_value这个数字变成size形状的张量
2)随机抽样(随机初始化):
torch.rand(size) [0,1)内的均匀分布随机数
torch.rand_like(input)返回跟input的tensor一样size的0-1随机数
torch.randn(size)返回标准正太分布N(0,1)的随机数
torch.normal(mean, std, out=None)正态分布。这里注意,mean和std都是tensor,返回的形状由mean和std的形状决定,一般要求两者形状一样。如果,mean缺失,则默认为均值0,如果std缺失,则默认标准差为1.
3)tensor的切片、合并、变形、抽取操作
torch.cat(seq, dim=0, out=None),把一堆tensor丢进去,按照dim指定的维度拼接、堆叠在一起.
示例:
In [70]: x = torch.tensor([[1,2,3]])
In [71]: x
Out[71]: tensor([[1, 2, 3]])
 #按第0维度堆叠,对于矩阵,相当于“竖着”堆
In [72]: print(torch.cat((x,x,x),0))
tensor([[1, 2, 3],
        [1, 2, 3],
        [1, 2, 3]])
 #按第1维度堆叠,对于矩阵,相当于“横着”拼
In [73]: print(torch.cat((x,x,x),1)) 
tensor([[1, 2, 3, 1, 2, 3, 1, 2, 3]])
torch.chunk(tensor, chunks, dim=0)把tensor切成块,数量由chunks指定。
示例:
In [74]: a = torch.arange(10)
In [75]: a
Out[75]: tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [76]: torch.chunk(a,4)
Out[76]: (tensor([0, 1, 2]), tensor([3, 4, 5]), tensor([6, 7, 8]), tensor([9]))
切块还有torch.split(tensor, split_size_or_sections, dim=0)具体区别大家自行查阅文档
按index选择:torch.index_select(input, dim, index, out=None)
按mask选择:torch.masked_select(input, mask, out=None)

经常会使用的“压扁”函数:torch.squeeze(input),压缩成1维。注意,压缩后的tensor和原来的tensor共享地址
改变形状:torch.reshape(input, shape)以及tensor.view(shape).前者是把tensor作为函数的输入,后者是任何tensor的函数。实际上,二者的返回值,都只是让我们从另一种视角看某个tensor,所以不会改变本来的形状,除非你把结果又赋值给原来的tensor。下面给一个例子对比二者的用法:
示例:
In [82]: a
Out[82]: tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 单纯的调用view函数:
In [83]: a.view(2,5)
Out[83]:
tensor([[0, 1, 2, 3, 4],
        [5, 6, 7, 8, 9]])
# a的形状并不会变化
In [84]: print(a) 
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 试试reshape函数:
In [86]: torch.reshape(a,[5,2])
Out[86]:
tensor([[0, 1],
        [2, 3],
        [4, 5],
        [6, 7],
        [8, 9]])
# a的形状依然不会变化:
In [87]: a
Out[87]: tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
要想让a的形状变化,比如把结果赋值给a,比如a = a.view(2,5)。
4)基本数学操作
加法直接加:x+y   torch.add(x,y)     torch.add(input, value, out=None)
乘法:torch.mul(input, other, out=None)用input乘以other
除法:torch.div(input, other, out=None)用input除以other
指数:torch.pow(input, exponent, out=None)
开根号:torch.sqrt(input, out=None)
四舍五入到整数:torch.round(input, out=None)
argmax函数:torch.argmax(input, dim=None, keepdim=False)返回指定维度最大值的序号,dim给定的定义是:the demention to reduce.也就是把dim这个维度的,变成这个维度的最大值的index。例如:
sigmoid函数:torch.sigmoid(input, out=None)
tanh函数:torch.tanh(input, out=None)
torch.abs(input, out=None)取绝对值
torch.ceil(input, out=None)向上取整,等于向下取整+1
torch.clamp(input, min, max, out=None)刀削函数,把输入数据规范在min-max区间,超过范围的用min、max代替
5)Torch Tensor与Numpy的互相转换
Tensor-->Numpy   直接用.numpy()即可。
Numpy-->Tensor   用torch.from_numpy()来转换。
示例:
In [11]: a = torch.ones(2,4)
In [12]: a
Out[12]:
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.]])
In [13]: b = a.numpy()
In [14]: b
Out[14]:
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.]], dtype=float32)
In [15]: a.add_(1)
Out[15]:
tensor([[2., 2., 2., 2.],
        [2., 2., 2., 2.]])
In [16]: b
Out[16]:
array([[2., 2., 2., 2.],
       [2., 2., 2., 2.]], dtype=float32)

import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)

torch复现论文简明笔记相关推荐

  1. 论文学习笔记: Learning Multi-Scale Photo Exposure Correction(含pytorch代码复现)

    论文学习笔记: Learning Multi-Scale Photo Exposure Correction--含pytorch代码复现 本章工作: 论文摘要 训练数据集 网络设计原理 补充知识:拉普 ...

  2. pytorch tensor 初始化_PyTorch简明笔记[1]-Tensor的初始化和基本操作

    听麻麻说,偷偷收藏而不感谢是不礼貌的,至少应该点个赞~我觉得麻麻说的对! 不断地被人安利PyTorch,终于忍不住诱惑决定入坑了. 当初学习TensorFlow的时候,没有系统性地学习.之前TF的英文 ...

  3. DCP(Deep Closest Point)论文阅读笔记以及详析

    DCP论文阅读笔记 前言 本文中图片仓库位于github,所以如果阅读的时候发现图片加载困难.建议挂个梯子. 作者博客:https://codefmeister.github.io/ 转载前请联系作者 ...

  4. 2019 sample-free(样本不平衡)目标检测论文阅读笔记

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自知乎,已获作者同意转载,请勿二次转载 (原文地址:https://zhuanlan.zhihu.com/p/100052168) 背景 < ...

  5. 对抗训练-smart 论文阅读笔记

    对抗训练-smart 论文阅读笔记 SMART: Robust and Efficient Fine-Tuning for Pre-trained NaturalLanguage Models thr ...

  6. 论文阅读笔记:看完也许能进一步了解Batch Normalization

    提示:阅读论文时进行相关思想.结构.优缺点,内容进行提炼和记录,论文和相关引用会标明出处. 文章目录 前言 介绍 BN之前的一些减少Covariate Shift的方法 BN算法描述 Batch No ...

  7. 复现计算机论文模型,深度学习模型复现难?看看这篇句子对模型的复现论文

    原标题:深度学习模型复现难?看看这篇句子对模型的复现论文 在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 ...

  8. 【SOD论文阅读笔记】Visual Saliency Transformer

    [SOD论文阅读笔记]Visual Saliency Transformer 一.摘要 Motivation: Method: Experimental results 二.Introduction ...

  9. 论文阅读笔记(2):Learning a Self-Expressive Network for Subspace Clustering,SENet,用于大规模子空间聚类的自表达网络

    论文阅读笔记(2):Learning a Self-Expressive Network for Subspace Clustering. SENet--用于大规模子空间聚类的自表达网络 前言 摘要 ...

最新文章

  1. Monkey基本使用(转载)
  2. Qt中的QFileDialog
  3. wpf 修改label值_WPF 获取动态添加控件的值
  4. 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
  5. 程序中添加动态用户密码
  6. 这款耳机堪比千元级的AirPods
  7. Docker学习文档之三 其他相关-生产环境
  8. 哔哩哔哩2019年Q4及全年财报:全年营收67.8亿元,同比增长64%
  9. 小程序 | 云数据库模糊查询
  10. 各种文件后缀名与打开方式大全
  11. Android涂鸦画板原理详解——从初级到高级(一)
  12. 用友软件计算机时间格式,如何正确设置系统日期格式?_速达软件_用友,速达,管家婆,微软,金蝶,方正,博世通,数据博士,进销存,财务软件-飞鸿软件帮助中心 -...
  13. 009-Dockerfile-MAINTAINER(deprecate)-使用 LABEL 代替
  14. VCSA6.7移除添加vSAN磁盘组
  15. 哈尔滨计算机毛校长国二,【实验视角】静待紫冰花开 知行合一 且行且知 ——记哈尔滨市实验学校校长王媛参加第二届中国阳明心学高峰论坛...
  16. 什么是强化学习?(贝尔曼方程)
  17. 基于微信小程序的校园食堂窗口自助点餐系统#毕业设计
  18. 零基础怎么转行软件测试?不知道怎么学习。
  19. Web 容器、HTTP 服务器 、Servlet 容器区别与联系
  20. 南京大学计算机专业录取分数线,南京大学2019年各省各专业录取分数线

热门文章

  1. linux 网络地址
  2. 网络编程中的超时检测
  3. 11.20 yum:自动化RPM包管理工具
  4. python数据分析知识点_Python基础知识点总结:数据
  5. kill进程_你还在使用kill -9 杀进程吗?从原理谈避免踩雷!
  6. 历届试题 大臣的旅费(树的直径)
  7. 阿里云能耗宝新品发布
  8. 回看2020-数据库大讲堂
  9. 消息队列之延时消息应用解析及实践
  10. 来自Riot 的一份游戏美术教程(四):环境美术