在conda的环境中安装Jupyter及其他软件包
Pytorch 建立在张量(tensor)之上,Pytorch张量是一个 n 维数组,类似于 NumPy 数组。专门针对GPU设计,可以运行在GPU上以加快计算效率。换句话说,Pytorch张量是可以运行在GPU上的多维数据。
目录
[将张量转换为 Numpy 数组](#将张量转换为 Numpy 数组)
[将 Numppy 数组转换为张量](#将 Numppy 数组转换为张量)
基础语法
Pytorch张量 | Numpy数组 | |
---|---|---|
torch.ones(.) | numpy.ones(.) | 创建一个一数组 |
torch.zeros(.) | numpy.zeros(.) | 创建一个零数组 |
torch.rand(.) | numpy.random.rand(.) | 创建随机数组 |
torch.tensor(.) | numpy.array(.) | 从给定值创建数组 |
x.shape or x.size() | x.shape | 获取数组形状 |
定义张量数据类型
默认数据类型
默认张量数据类型为 torch.float32
import torch
x = torch.ones(2, 2)
print(x)
print(x.dtype)
指定数据类型
x = torch.ones(2, 2, dtype=torch.int8)
print(x)
print(x.dtype)
改变张量数据类型
先定义一个张量,打印其数据类型
x=torch.ones(1)
print(x.dtype)
通过".type()"命令改变数据类型
x=x.type(torch.torch.uint8)
print(x.dtype)
可以看到数据类型由torch.float32改变为了torch.uint8
张量与Numpy数组间的转换
将张量转换为 Numpy 数组
定义一个随机张量
x=torch.rand(2,2)
print(x)
print(x.dtype)
通过".numpy()"命令转换为numpy数组
y=x.numpy()
print(y)
print(y.dtype)
将 Numppy 数组转换为张量
定义一个numpy数组
import numpy as np
x=np.zeros((2,2),dtype=np.float32)
print(x)
print(x.dtype)
用".from_numpy()"命令转换为张量
y=torch.from_numpy(x)
print(y)
print(y.dtype)
在设备间移动张量
一般情况下,Pytorch 张量存储在 CPU 上,张量运行在 GPU上 以加快计算速率,这是张量的主要优势。为了有效利用这个优势,需要将张量移动到 CUDA 设备,可以使用 .to 方法将张量移动到相应设备上。
默认在CPU上定义张量
使用".tensor()"命令,张量一般默认定义在CPU上
x=torch.tensor([1, 1.5])
print(x)
print(x.device)
定义CUDA设备
if torch.cuda.is_available():
device=torch.device("cuda:0")
torch.cuda.current_device()
将张量移动到CUDA设备
x = x.to(device)
print(x)
print(x.device)
将张量移动到CPU
device = torch.device("cpu")
x = x.to(device)
print(x)
print(x.device)
在任意设备上定义张量
device = torch.device("cuda:0")
x = torch.ones(2,2, device=device)
print(x)