初识Pytorch

初识Pytorch

在Pytorch当中,torch.tensor是储存和变化的主要工具。其中Tensor提供GPU计算和自动求梯度等功能,这让Tensor更加适合深度学习

首先导入Pytorch:

import torch

torch有一个操作是rand,它可以来生成一个指定大小的随机矩阵

y = torch.rand(5,3)
y
tensor([[0.0714, 0.8323, 0.1296],
        [0.8457, 0.9962, 0.9307],
        [0.3740, 0.7760, 0.5245],
        [0.3022, 0.2628, 0.1213],
        [0.5137, 0.3057, 0.7018]])

另外还可以形成零矩阵,同时可以自己指定数据的类型

x = torch.zeros(5,3,dtype=torch.long)
x
tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]])

还可以直接根据数据进行创建

x = torch.tensor([5.5,3])
x
tensor([5.5000, 3.0000])

可以通过shape和size返回一个tuple,代表这个数据的大小:

x.size()
torch.Size([2])
x.shape
torch.Size([2])

由于是tuple类型,所以支持所有的tuple操作

索引

索引出来的结果与元数据共享内存,如果修改了一个,另外一个也会跟着修改

x = torch.rand(5,3,dtype=torch.float)
x
tensor([[0.7576, 0.3497, 0.5464],
        [0.3435, 0.6653, 0.3712],
        [0.7674, 0.4093, 0.9313],
        [0.0418, 0.0199, 0.4834],
        [0.9696, 0.6401, 0.4849]])
y = x[0,:]
y
tensor([0.7576, 0.3497, 0.5464])
y += 1
print(y)
print(x[0,:])
tensor([1.7576, 1.3497, 1.5464])
tensor([1.7576, 1.3497, 1.5464])

可以发现修改y,x也同时被修改了

改变形状

view()提供了这个功能,它能够改变Tensor的形状,但要注意,view仅仅是改变了对这个张量的观察角度,内部数据并没有发生改变

y = x.view(15)
z = x.view(-1, 5)  # -1所指的维度可以根据其他维度的值推出来
print(x.size(), y.size(), z.size())
torch.Size([5, 3]) torch.Size([15]) torch.Size([3, 5])

如果我们只是想返回一个副本,不想改变原数据集该怎么办》Pytorch提供了clone,它就是创建一个副本

x_cp = x.clone()
x += 5
print(x)
print(x_cp)
tensor([[6.7576, 6.3497, 6.5464],
        [5.3435, 5.6653, 5.3712],
        [5.7674, 5.4093, 5.9313],
        [5.0418, 5.0199, 5.4834],
        [5.9696, 5.6401, 5.4849]])
tensor([[1.7576, 1.3497, 1.5464],
        [0.3435, 0.6653, 0.3712],
        [0.7674, 0.4093, 0.9313],
        [0.0418, 0.0199, 0.4834],
        [0.9696, 0.6401, 0.4849]])

使用clone还有一个好处是会被记录在计算图中,即梯度回传到副本时也会传到源Tensor
还有一个函数item(),它可以将一个Tensor标量转换成一个number

x = torch.randn(1)
print(x)
print(x.item())
tensor([-0.1111])
-0.11108279973268509

线性代数

Pytorch中的Tensor支持超过一百种操作,包括转置、索引、切片、数学运算、线性代数等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

call me Patrick

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值