『PyTorch』第五弹_深入理解Tensor对象_上:初始化以及尺寸调整
一、创建Tensor
特殊方法:
t.arange(1,6,2)
t.linspace(1,10,3)
t.randn(2,3) # 标准分布,*size
t.randperm(5) # 随机排序,从0到n
t.normal(means=t.arange(0, 11), std=t.arange(1, 0, -0.1))
概览:
"""创建空Tensor"""
a = t.Tensor(2, 3)
# 创建和b大小一致的Tensor
c = t.Tensor(a.size())
print(a,c) # 数值取决于内存空间状态
-9.6609e+30 7.9594e-43 -4.1334e+27
7.9594e-43 -4.1170e+27 7.9594e-43
[torch.FloatTensor of size 2x3] -9.6412e+30 7.9594e-43 -9.6150e+30
7.9594e-43 -4.1170e+27 7.9594e-43
[torch.FloatTensor of size 2x3]
"""由list/tuple创建Tensor"""
b = t.Tensor([[1,2,3],[4,5,6]])
print(b) # 根据list初始化Tensor print(b.tolist())
print(b) # 并非inplace转换
1 2 3
4 5 6
[torch.FloatTensor of size 2x3] [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]] 1 2 3
4 5 6
[torch.FloatTensor of size 2x3]
# 等价写法,查看元素个数(2*3=6)
print(b.numel())
print(b.nelement())
6
6
# 传入tuple等价于传入list
d = t.Tensor((2,3))
print(d)
2
3
[torch.FloatTensor of size 2]
"""创建特定Tensor"""
print(t.eye(2,3))
print(t.ones(2,3))
print(t.zeros(2,3))
print(t.arange(1,6,2))
print(t.linspace(1,10,3))
# 几个特殊初始化方法
print(t.randn(2,3)) # 标准分布,*size
print(t.randperm(5)) # 随机排序,从0到n
print(t.normal(means=t.arange(0, 11), std=t.arange(1, 0, -0.1)))
1 0 0
0 1 0
[torch.FloatTensor of size 2x3] 1 1 1
1 1 1
[torch.FloatTensor of size 2x3] 0 0 0
0 0 0
[torch.FloatTensor of size 2x3] 1
3
5
[torch.FloatTensor of size 3] 1.0000
5.5000
10.0000
[torch.FloatTensor of size 3] -0.9959 -0.8446 0.7241
3.0315 -0.5367 1.0722
[torch.FloatTensor of size 2x3] 4
3
2
1
0
[torch.LongTensor of size 5] -0.5880
1.2708
1.5530
3.2490
4.7693
4.9497
6.0663
6.1482
7.9109
8.9492
10.0000
[torch.FloatTensor of size 11]
二、尺度调整
特殊方法:
a.view(-1,3)
b.unsqueeze_(0)
b.resize_(3,3)
概览:
a = t.arange(0,6)
print(a.view(2,3)) # 非inplace
print(a.view(-1,3)) # -1为自动计算大小
0 1 2
3 4 5
[torch.FloatTensor of size 2x3] 0 1 2
3 4 5
[torch.FloatTensor of size 2x3]
b = a.view(-1,3)
b.unsqueeze_(0)
print(b)
print(b.size())
(0 ,.,.) =
0 1 2
3 4 5
[torch.FloatTensor of size 1x2x3] torch.Size([1, 2, 3])
c = b.view(1,1,1,2,3)
print(c.squeeze_(0)) # 压缩第0个1
print(c.squeeze_()) # 压缩全部的1
(0 ,0 ,.,.) =
0 1 2
3 4 5
[torch.FloatTensor of size 1x1x2x3] 0 1 2
3 4 5
[torch.FloatTensor of size 2x3]
# view要求前后元素数相同,resize_没有这个要求
# resize_没有对应的非inplace操作版本
print(b.resize_(1,3))
print(b.resize_(3,3))
print(b)
0 1 2
[torch.FloatTensor of size 1x3] 0.0000e+00 1.0000e+00 2.0000e+00
3.0000e+00 4.0000e+00 5.0000e+00
3.3845e+15 0.0000e+00 0.0000e+00
[torch.FloatTensor of size 3x3] 0.0000e+00 1.0000e+00 2.0000e+00
3.0000e+00 4.0000e+00 5.0000e+00
3.3845e+15 0.0000e+00 0.0000e+00
[torch.FloatTensor of size 3x3]
『PyTorch』第五弹_深入理解Tensor对象_上:初始化以及尺寸调整的更多相关文章
- 『PyTorch』第五弹_深入理解autograd_上:Variable属性方法
在PyTorch中计算图的特点可总结如下: autograd根据用户对variable的操作构建其计算图.对变量的操作抽象为Function. 对于那些不是任何函数(Function)的输出,由用户创 ...
- 『PyTorch』第五弹_深入理解autograd_下:函数扩展&高阶导数
一.封装新的PyTorch函数 继承Function类 forward:输入Variable->中间计算Tensor->输出Variable backward:均使用Variable 线性 ...
- 『PyTorch』第五弹_深入理解autograd_中:Variable梯度探究
查看非叶节点梯度的两种方法 在反向传播过程中非叶子节点的导数计算完之后即被清空.若想查看这些变量的梯度,有两种方法: 使用autograd.grad函数 使用hook autograd.grad和ho ...
- 『PyTorch』第五弹_深入理解Tensor对象_中下:数学计算以及numpy比较_&_广播原理简介
一.简单数学操作 1.逐元素操作 t.clamp(a,min=2,max=4)近似于tf.clip_by_value(A, min, max),修剪值域. a = t.arange(0,6).view ...
- 『PyTorch』第五弹_深入理解Tensor对象_下:从内存看Tensor
Tensor存储结构如下, 如图所示,实际上很可能多个信息区对应于同一个存储区,也就是上一节我们说到的,初始化或者普通索引时经常会有这种情况. 一.几种共享内存的情况 view a = t.arang ...
- 『PyTorch』第五弹_深入理解Tensor对象_中上:索引
一.普通索引 示例 a = t.Tensor(4,5) print(a) print(a[0:1,:2]) print(a[0,:2]) # 注意和前一种索引出来的值相同,shape不同 print( ...
- 『PyTorch』第四弹_通过LeNet初识pytorch神经网络_下
『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上 # Author : Hellcat # Time : 2018/2/11 import torch as t import t ...
- 『PyTorch』第三弹重置_Variable对象
『PyTorch』第三弹_自动求导 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Varibale包含三个属性: data ...
- 『PyTorch』第十弹_循环神经网络
RNN基础: 『cs231n』作业3问题1选讲_通过代码理解RNN&图像标注训练 TensorFlow RNN: 『TensotFlow』基础RNN网络分类问题 『TensotFlow』基础R ...
随机推荐
- jboos下载地址记录
JBoss在2006年被 RedHat 收购.在各种 J2EE 应用服务器中,JBoss 是最受欢迎而且功能最为强大的应用服务器.不过JBoss从8.0开始改名为WildFly,这个新名称在我看来似乎 ...
- SQL学习之SqlMap SQL注入
sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了. 今天把我一 ...
- 04:sqlalchemy操作数据库
目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...
- CmsEasy 5.5 cut_image 代码执行漏洞
3 CmsEasy 5.5 cut_image 代码执行漏洞 3.1 摘要 3.1.1 漏洞介绍 CmsEasy是一款基于PHP+MySQL架构的网站内容管理系统,可面向大中型站点提供重量级网站建设解 ...
- 20145330 《网络对抗》 Eternalblue(MS17-010)漏洞复现与S2-045漏洞的利用及修复
20145330 <网络对抗> Eternalblue(MS17-010)漏洞利用工具实现Win 7系统入侵与S2-045漏洞的利用及修复 加分项目: PC平台逆向破解:注入shellco ...
- poj 1274 The Perfect Stal - 网络流
二分匹配传送门[here] 原题传送门[here] 题意大概说一下,就是有N头牛和M个牛棚,每头牛愿意住在一些牛棚,求最大能够满足多少头牛的要求. 很明显就是一道裸裸的二分图最大匹配,但是为了练练网络 ...
- Cocoa 初识
1,判断程序是否第一次启动 OC: if (![[NSUserDefaults stringOfKeyInStandardDefaults:FirstOpenApp] boolValue]) { [s ...
- 【前端】纯html+css+javascript实现楼层跳跃式的页面布局
实现效果演示: 实现代码及注释: <!DOCTYPE html> <html> <head> <title>楼层跳跃式的页面布局</title&g ...
- Python3基础 time 索引值访问元组中的年月日时分秒
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- hbase读写流程分析
前言 最近被大佬问到一个问题,hbase查询数据在最坏的场景下需要进行几次rpc,当时就懵了..下面主要对client端代码进行分析.阅读文章和看源码更配~ 读数据 流程总览 1. 从zookeepe ...