pytorch框架中tensor基础使用

1.创建一个没有初始化的矩阵,里面是内存随便给的数据。

x = torch.empty(5, 3)
print(x)

2.创建一个有初始化的矩阵,rand 按照高斯分布进行初始化。

x = torch.rand(5, 3)
print(x)

3.创建一个全0矩阵并可指定数据元素的类型为long。

x = torch.zeros(5, 3, dtype=torch.long)
print(x)

4.直接创建张量。

x = torch.tensor([2.5, 3.5])
print(x)

5.创建一个新张量,张量里面全是1,通过已有张量,创建相同尺寸的张量,用y.size()返回的内容本质上是一个元组,可以用两个值进行获取。

x = x.new_ones(5, 3, dtype=torch.double)
y = torch.rand_like(x, dtype=torch.float)
print(y)
print(y.size())

6.张量之间的加法操作,创建一个空的张量(张量大小必须和加和后的张量大小相同),将将加和的值放在这个空的张量里面

print(x+y)
print(torch.add(x, y))
result = torch.empty(5, 3)
print(torch.add(x, y, out=result))
print(y.add(x))
print(result)

7.张量切片

print(x[:, 1])  # 所有行第一列
print(x[:, :2])     # 所有行的前两列

8.改变张量的形状

x = torch.randn(4, 4)
y = x.view(16)      # 变成一维数组,数组个数必须是张量元素数量。
z = x.view(-1, 8)   # -1代表自动匹配的个数,后面的数必须是能被总数量整除的数。
print(x.size(), y.size(), z.size())

9.如果张量里面只有一个元素(只适用1个元素的张量),item()可以将元素拿出来,变成python类型的数字。

x = torch.randn(1)
print(x.item())

10.获取多个元素张量里面的数据

a = torch.randn(2, 3)
print(a[0, 0].tolist())

11.torch的tensor和numpy是内存共享的

a = torch.ones(5)
b = a.numpy()
print(a, b)
a.add_(1)
print(a, b)     # 在tensor a上加了1, 那么在numpy上也加了1, 因为共享内存

12.将Numpy array转换成Torch Tensor

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

13.在GPU上创建张量,将CPU上的张量转移到GPU上并进行相加 # 判断服务器上是否已经安装GPU

if torch.cuda.is_available():
    # 定义设备
    device = torch.device('cuda')
    # 直接在GPU上创建张量y,在CPU上创建张量x
    y = torch.randn(3, 4, device=device)
    x = torch.ones_like(x)
    # 将CPU的x转换成GPU的x
    x = x.to(device)
    # 只有将CPU上的数据转换到GPU上,才能进行加法运算。
    # 计算的话,要么同一台CPU上,要么同一台GPU上。
    print(y + x)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值