1、两种常见的随机初始化

(1) rand函数

rander函数就是随机的使用0和1的均值分布来初始化,也就是说它从零和一的空间中随机的均匀的sample出来,这样数据就回均匀的分布在0和1之间。

torch.rand(3,3) #表示随机生成一个3X3的数值在0和1之间的均匀分布的矩阵a=torch.rand(3,3)
torch.rand_like(a) #将a,shape读取出来再送给rand函数

(2)randint函数

randint的参数表示它要指定一个极小值,一个最小值和一个最大值

torch.randint(1,10,[3,3])

2、正态分布 randn函数

torch.randn(3,3) #表示均值为零,方差为一的三行三列的矩阵#自定义均值和方差
torch.normal(mean=torch.full([10],0),std=torch.arange(1,0,-0.1))
#使用起来有点奇怪

3、full tensor全部赋值为一个元素

torch.full([2,3],7)#表示要生成一两行三列的一个tensor,把全部数值赋值为7torch.full([],7) #生成标量,dim为1torch.full([1],7) ##生成向量

4、arange/range 递增或递减生成等差数列

troch.arange(0,10) # 生成一个从零开始不包括10的等差数列troch.arange(0,10,2) #生成一个从零开始不包括10的,阶梯为2的等差数列troch.range(0,10) #这个不需要看

5、linspace/logspace 生成等分

torch.linspace(0,10,steps=4)
#表示0到10,包含10,steps=4表示要切成四等分torch.linspace(0,10,steps=10)
#表示0到10,包含10,所以有11个数,steps=10表示要切成10等分torch.linspace(0,10,steps=11)
#表示0到10,包含10,所以有11个数,steps=10表示要切成11等分torch.logspace(0,-1,steps=10)
#表示生成0到-1之间的数,10的0次方到10的-1次方。

6、ones/zero/eye  全部是1的,全部是0的,单位矩阵

torch.ones(3,3) 生成三行三列数值全部为1

torch.zero(3,3) 生成三行三列数值全部为0

torch.eye(3,4) 生成三行四列对角是1的单位矩阵

7、randperm 随机打散

生成的是0到10的随即索引是不包括10的

索引

1、具体的索引

a=torch.rand(4,3,28,28)#dim=4的数据,这个数据就是我们用的CNN里面的数据输入
#第一个维度是batch_size,第二个维度是n_channels,第三个和第四个是长和宽
print(a.shape)print(a.index_select(0,[0,2]))
#第一个参数表示对那个维度上面进行操作,第二个参数表示索引号,取0到2,也就是三个通道print(a.index_select(1,[1,2]))
#第一个参数表示再第一个维度上进行操作,取1到2,也就是两个通道print(a.index_select(2,torch,arrage(28)).shape)
#表示对第二个维度进行操作,在行上进行操作,第二个参数表示选取了所有的行print(a.index_select(2,torch,arrage(8)).shape)
#表示对第二个维度进行操作,在行上进行操作,第二个参数表示选取0到8,也就是8行

2、...

...三个点,表示表示任意多的维度

a=torch.rand(4,3,28,28)#dim=4的数据,这个数据就是我们用的CNN里面的数据输入
#第一个维度是batch_size,第二个维度是n_channels,第三个和第四个是长和宽
print(a.shape) #输出结果torch.Size([4,3,28,28])print(a[...].shape) #输出结果torch.Size([4,3,28,28])
#a[...]=a[0]print(a[0,...].shape) #输出结果torch.Size([3,28,28])
#表示取第0个图片的所有通道,所有行和所有列print(a[:,1,...].shape) #输出结果torch.Size([4,28,28])
#取所有图片的第一个通道的所有行和所有列print(a[...,:2].shape) #输出结果torch.Size([4,3,28,2])
#第一个参数表示前面任意长度都取,所有batch,所有channal,所有行的前两列,第二个参数表示只取两列

3、使用mask(掩码)来索引  masked_select()

 x=troch.randn(3,4)
print(x) #随机生成一个三行四列的tensormask=x.ge(0.5) #表示大于等于0.5的元素的位置输出为1torch.masked_select(x,mask)  #表示掩码为1的数据取出来torch.masked_select(x,mask).shape #mask会把原来的三行四列的张量打平,变成12个数据

4、take函数

src=torch.tensor([[4,3,5],[6,7,8]])
#表示两行三列的数据先打平,变成6个数据
torch.take(src,torch.tensor([0,2,5]))
#表示取第1个、第3个、第6个数据  输出结果tensor([4,5,8])

Pytorch——如何创建一个tensor与索引和切片(二)相关推荐

  1. Pytorch——如何创建一个tensor与索引和切片(一)

    创建Tensor numpy是一个非常常见的数据的一个载体,数据可以先从numpy中间先导进tensor来: 1.从numpy引入 import from numpy a=np.array([2,3. ...

  2. 【小白学习PyTorch教程】十五、BERT:通过PyTorch来创建一个文本分类的Bert模型

    @Author:Runsen 2018 年,谷歌发表了一篇题为<Pre-training of deep bidirectional Transformers for Language Unde ...

  3. Pytorch中Tensor的索引,切片以及花式索引(fancy indexing)

    目录 理解Tensor的dim 索引 简单索引 用1维的list,numpy,tensor索引 用booltensor索引 切片 花式索引 结语 前一段时间遇到一个花式索引的问题,在搜索良久之后没有找 ...

  4. 数据库表的基本操作——创建一个表,索引和查询

    1.定义基本表.删除和更改 (1)定义基本表 create table <表名>(<列名><数据类型>[列级完整性约束条件]     [,<列名>< ...

  5. 使用UE4创建一个简单真实的地球(二)

    使用UE4创建一个简单真实的地球 如何创建一个简单的地球材质. BaseColor 基础颜色 排除由反射引起的杂光之后物体的颜色.主要用来模拟地球的真实表面. 白昼 地图与云图叠加,即图像的叠加运算( ...

  6. python如何创建一个列表,在python中创建一个由列表索引的字典

    I would like to create a dictionary which is indexed by lists. For instance, my dictionary should lo ...

  7. Tensor的索引与切片

    作用:调取数据中某一个或者某一块想取的数据 (1)常规索引方式(即a[ ][ ][ ]的方式) In [16]: a = tf.ones([3,28,28,3])In [17]: a[0][5][7] ...

  8. PyTorch教程(三):索引与切片

    a = torch.rand(4,3,28,28) # 4张图片,3通道,高度28,宽度28a[0].shape # torch.Size([3, 28, 28]) 表示第0张图片的shape是3通道 ...

  9. 【PyTorch】1入门——Tensor、自动微分、神经网络、PyTorch 图像分类

    PyTorch60min入门教程 1. PyTorch简介 2. 快速入门 2.1 安装与配置 2.2 PyTorch入门第一步 2.2.1 Tensor 2.2.2 自动微分 2.2.3 神经网络 ...

最新文章

  1. 性能测试中传——lr理论基础(四)
  2. 将横排文本变成竖排文本
  3. suse linux c 编译环境,SUSE 11中安装GCC开发环境
  4. Mathematica初学者第二讲
  5. django1.4 关于处理静态文件的问题
  6. 活久见!一美国大爷发明了永不掉链子的自行车,垂直踩踏即可驱动
  7. duilib消息事件产生和分发解释
  8. 【美文保存】nosql数据库对比以及如何巧妙利用redis来提高效率?
  9. ftp服务器在线浏览,ftp服务器PDF文件在线查看的实现方法
  10. 6-2-1:STL之string——string的快速入门、常用接口
  11. oracle apex触发器,triggers - 插入之前/更新Apex触发器之前,测试覆盖率失败 - 堆栈内存溢出...
  12. 实验一:译码器的实现
  13. ccf试题1:小中大
  14. 外卖行业现状分析_简要分析外卖运营行业的发展现状
  15. 计算机任务管理器无法响应,Win7系统电脑在任务管理器中关闭进程时总是未响应的解决方法...
  16. video全局事件属性
  17. 深入探讨分类模型评价指标
  18. 【STM32F407VET6开发】第一章 初识Keil及Keil 5安装教程
  19. 如何将SketchUp插件添加到菜单栏及工具条
  20. SD卡损坏及手动修复记录

热门文章

  1. opencv打开摄像头失败的一种可能cv2.error: Unknown C++ exception from OpenCV code
  2. (2022)Springboot+vue3项目开发前后端分离书法图书管理Coun
  3. 亚马逊Amazon SP-API注册申请和授权对接开发和亚马逊SP-API开发人员注册资料的注意事项,PII申请的事项
  4. A. Sequence with Digits
  5. 【DNS】Windows查看和清理DNS缓存
  6. 无固定公网IP,群晖动态解析域名到动态公网IP
  7. C语言学生管理系统(期末作业,超详细哟,拿走不谢!!!)
  8. 美股网页表格数据爬虫设计
  9. 学渣的刷题之旅 leetcode刷题 100.相同的树
  10. 有了规范,第二代曲面电视会更火吗?