Pytorch 学习(一):Pytorch 简单数据操作

Pytorch 中的简单数据操作

数据在 Pytorch 中以 tensor 的形式存在,简单的数据创建方法

import torch
x = torch.randn(2, 2)  # 创建一个 2 x 2 的随机值 tensor
y = torch.zeros(2, 2)  # 创建一个 2 x 2 的全 1 tensor
z = torch.tensor([[1.0, 1.0], [1.0, 1.0]], dtype=torch.float32)  # 直接赋值创建 2 x 2 的 tensor

tensor 的简单运算

z = x + y  # 加法
z = x * y  # 矩阵点乘
z = x.mm(y)  # 矩阵×乘
torch.mm(x, y, z)  # 同上

tensor 的维度改变

x1 = x.view(1, 4)  # view 仅改变维度,共享内存,不改变存储方式
print(x1.size())  # 输出 x1 的形状, (1, 4)
x += 1  # x1 同时改变
y1 = x.view(-1, 1) # -1 为自动计算形状, (4, 1)
x2 = x.clone().view(1, 4)  # 不共享内存

tensor 与 numpy 的相互转换

import numpy as np
# tensor 2 numpy
x = torch.randn(2, 2)
y = x.numpy()  # 与 x 共享内存
# numpy 2 tensor
x = np.ones((1, 2))
y1 = torch.from_numpy(x)  # 与 x 共享内存
y2 = torch.tensor(x)  # 与 x 不共享内存

数据在 CPU 和 GPU 上转换计算

x = torch.randn(1, 2)
if torch.cuda.is_avialable():  # GPU 可用
    device = torch.device('cuda')
    torch.cuda.set_device(2)  # 设置 GPU-2 为主 GPU
    # 多 GPU 下使用 torch.nn.DataParallel(module, device_ids)
    x = x.to(device)  # 转换为 GPU 模式
    y = torch.ones_like(x, device=device)  # 直接创建 GPU 上数据
    z = x + y
    z = z.to('cpu', torch.double) # 转化为 CPU

指定目标 GPU 同样可以使得部位 GPU 可见

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '2, 3'  # GPU 2,3 可见
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值