【pytorch框架学习】Pytorch基础操作

1.判断数据类型

a.type()
// 或者
isinstance(a,torch.FloatTensor)

2.tensor 和 Tensor区别

Tensor类的未初始化,随机的数据会非常大活非常小

a = torch.tensor(2.2)  //tensor(2.2)标量
a.shape   //torch.Size([]),dim=0
torch.tensor([1.1])  //tensor([1.100])向量
torch.Tensor(2)  //tensor([3.2,4.9]);指定向量长度为2
torch.Tensor(2,3). //生成两行三列的矩阵
torch.empty(2,3) //不初始化数据
//torch.Tensor = torch.FloatTensor

3.形状转变列表

list(a.shape)

4.形状、元素总数、维度的多少

a.shape //计算a的size
a.numel //number of element
a.dim() = len(a.shape) //有多少个维度
a = tensor([[1,2,4],[3,4,5]])
a.shape   //[2,3]
len(a.shape)  // 2
a.dim() //2

5.numpy 与 tensor的转变

a = np.ones([2,3])
torch.from_numpy(a)

b = torch.ones(2,3)
b.numpy()

6.初始化的建立tensor

torch.ones(2,3)
torch.ones([2,3])//指定形状为列表是numpy的方法,不推荐
torch.randn(2,3)
torch.rand_like(a) //a是一个tensor
torch.randint(min,max,[dim1,dim2]) //[min,max)
torch.full([2,3],7) //矩阵
torch.full([1],7)  //向量
torch.full([],7)  //标量
torch.arange(start,end,steps) //steps默认为1,可以不指定;[start,end)
torch.linspace(start,end,steps) //[start,end]里取steps个数
torch.logspace(0,-1,steps=10) //[10^0,10^-1]切10个数
torch.zeros(2,3)
torch.eyes(2,3)

7.改变默认数据类型

tensor.set_default_tensor_type(torch.DoubleTensor)

8.打散

torch.randperm(10) //[0,9,3,4,1,2,7,6,8,5]
a = torch.rand(2,3)
idx = torch.randperm(2)
a[idx]

9.选取

a.shape. //torch.Size([4,3,28,28])
a.index_select(1,[1,2]) //在第一个维度上选取第1个和第2个
//意义:选取所有样本的第1和第2个通道channel

10.怎么表示任意多个维度;:,的组合

a.shape. //torch.Size([4,3,28,28])
a[...] //a的任意多个维度,选取整个a
a[:,1,...]
a[...,:2] //torch.Size([4,3,28,2])

11.mask

x = torch.randn(3,4)
mask = x.ge(0.5) //大于0.5的地方为1
torch.masked_select(x,mask)

12.维度变换

a.shape. //torch.Size([4,3,28,28])
a.reshape(4,28*28)

//展开
a.unsqueeze(n) //在索引n的前面插入一个维度
n:[0,a.dim()]
a.unsqueeze(0).shape  //[1,4,1,28,28];在0索引的前面插入一个维度

b.shape  //torch.Size([1,32,1,1])
b.squeeze().shape.  //torch.Size([32])
b.squeeze(0).shape.  //[32,1,1]
//不传入参数将所有1挤压掉,传入dim的话就把dim维的1挤压掉,若不是该维度不是1,则不变

b.shape  //torch.Size([1,32,1,1])
b.expand(4,32,14,14)  //torch.Size([4,32,14,14])
//只能将维度是1的扩展到N,不能将维度上3扩展到N;不变的维度可以用-1代替或用数据原来的维度代替
expand(-1.32.-1,-1)

a.T   //可以用于多维tensor
a.t(). //用于2维向量

a1=a.transpose(1,3).contiguous().view(4,3*32*32).view(4,32,32,3).transpose(1,3)
a = a1

b.permute(0,2,3,1)
//transpose一定只能交换2个维度,permute可以一次性指定所有交换
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值