PyTorch 学习(1) 什么是 PyTorch

PyTorch 学习(1) 什么是 PyTorch

来自 PyTorch 教程 Deep Learning with PyTorch: A 60 Minute Blitz > What is PyTorch?

开始

张量 Tensor

Tensor 类似 numpy 中的 ndarray, 不同的是 Tensor 可以在 GPU 上加速运算

import torch

创建一个 5x3 空矩阵,未初始化(这与 C++ 类似)

x = torch.empty(5, 3)

创建一个随机初始化的矩阵, 取值于 [0, 1)

x = torch.rand(5, 3)

创建零矩阵, 同时声明数据类型

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

根据数据(array_like)创建张量

x = torch.tensor([5, 3])

基于现有的张量进行创建, 保留相关属性

x = x.new_ones(4, 3)
x = torch.randn_like(x, dtype=torch.float)

获取张量的尺寸 size,返回值为 torch.Size,是一个元组 tuple,并且支持所有元组操作

x.size()

运算操作

加法

# 1
x + y
# 2
torch.add(x, y)

add 可以通过参数指定输出张量

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

通过 add_ 可以实现 += 的效果

y.add_(x)

任何使张量发生变化的操作都以 _ 结尾

张量支持 numpy 中的索引操作

x[:, 1]

通过 view 可以调整张量的结构, 通过设置 -1 来自适应,类似 resize

x = torch.randn(4, 4)
y = x.view(16)
z = x.view(-1, 8)

对于只有一个元素的张量,通过 item 将其变成一个 python number

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

更多张量操作请查看官方文档

NumPy 对接

使用 numpy 将张量转化为 numpy array

a = torch.randn(3, 4)
b = a.numpy()

使用 from_numpy 将 numpy array 转化为张量

c = torch.from_numpy(b)

当张量在 CPU 上运行时, torch 与 numpy 将共享内存空间,改变其中一个另一个也会改变

CUDA

在创建时指定 device 参数, 或者通过 to 将张量移动到对应设备上,比如 ‘cuda’, ‘cpu’, 或者直接用 cuda

if torch.cuda.is_available():
    device = torch.device('cuda')	# 获取 CUDA 设备
    y = torch.ones_like(x, device=device)
    z = x.to(device)
    z = x.cuda()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值