pytorch tensor_自用Pytorch学习笔记(四:创建tensor)(基于1.1版本)

创建tensor的方法

1、从numpy数组转换而来

np.array([2,3,3])

torch.from_numpy(a)

v2-c29f8f2435bfd2935a04cdda99bde90e_b.jpg

2、从list导入,将list元素作为参数传入

v2-c04339610c21472844e659c7bdc02948_b.jpg

注意点:tensor()的参数为现有数据,而Tensor()的参数为表示shape的元组,也可以接收现有数据,如c=torch.FloatTensor([2.3,1.36])。

Tensor的默认类型是FloatTensor,如果想改变,可以使用torch.set_default_tensor_type(torch.DouubleTensor)改变

使用随机值初始化tensor

1、torch.rand:随机值在[0,1]

2、torch.rand_like:接收一个tensor,用该tensor来生成随机值

3、torch.randint:需要指定最小值和最大值,[min,max) 如torch.randint(1,10,[3,3])

v2-4a2dd058de7c15e56109078d95d973e0_b.jpg

4、torch.randn(3,3):产生3x3的服从标准高斯分布的元素值

v2-059f70c508b4f62306e3ad99bdce73a4_b.jpg

5、torch.normal():自定义的正太分布,返回一个张量,包含从给定参数means,std的离散正态分布中抽取随机数。 均值means是一个张量,包含每个输出元素相关的正态分布的均值。 std是一个张量,包含每个输出元素相关的正态分布的标准差。 均值和标准差的形状不须匹配,但每个张量的元素个数须相同。

如果想要tensor的每个元素值均相同,那么可以使用torch.full()

v2-639592ea8739f48b9c50c8fe30e08079_b.jpg

torch.arange(0,10,x):生成从0到10(不含),间隔为x的数组,若没有x,则x默认为1

torch.linespace(0,10,steps=x):把[0,10](包含10)等分为x份。

v2-a5dc4fe595f165c200281723eaf38edf_b.jpg

v2-7ded1410ef195d65224a2e934ffcf6ce_b.jpg

v2-4c751367ce1fdb8f2030bb326b1f9962_b.jpg

torch.randperm(n, out=None):

给定参数n,返回一个从0到n-1的随机整数排列

使用randperm可以生成一个从0开始的、已经打乱的连续索引Tensor,用它可以对其它Tensor做shuffle。特别是在有几个需要保持一致顺序的Tensor时,用相同的索引Tensor就能保证shuffle之后的Tensor在那个维度上的顺序一致了。

import torch

# 两个Tensor的shape[0]是相同的,都是3
a = torch.rand(3, 1)
b = torch.rand(3, 1)
print(a, b, sep='n')
print("-" * 20)

# 制造一个[0,3)的索引序列
idx = torch.randperm(3)
print(idx)
print("-" * 20)

# 给a,b做shuffle,保证第一个维度在shuffle后的对应关系不变
a_sf = a[idx]
b_sf = b[idx]
print(a_sf, b_sf, sep='n')

输出:

tensor([[0.2253],
        [0.6864],
        [0.9565]])
tensor([[0.7317],
        [0.0779],
        [0.3842]])
--------------------
tensor([2, 1, 0])
--------------------
tensor([[0.9565],
        [0.6864],
        [0.2253]])
tensor([[0.3842],
        [0.0779],
        [0.7317]])

############################################

torch.index_select:按具体下标索引数据

torch.view:调整数据尺寸

torch.unsqueeze:增加维度

torch.squeeze:减少维度

torch.expand:

torch.repeat:

permute可以对任意高维矩阵进行转置,但没有 torch.permute() 这个调用方式, 只能 Tensor.permute()。

transpose只能操作2D矩阵的转置。有两种调用方式。

连续使用transpose也可实现permute的效果。

v2-93faa24c0f70f41887a03428291fabf1_b.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值