PyTorch是在2017年1月由Facebook推出的。它是经典机器学习库Torch框架的一个端口,主要编程语言为python。PyTorch“曾经”的优点是动态图,现在的优点是开源代码和开源社区。
PyTorch是一个年轻的框架。2017年1月28日,PyTorch 0.1版本正式发布,这是Facebook公司在机器学习和科学计算工具Torch的基础上,针对Python语言发布的全新的深度学习工具包。PyTorch类似NumPy,并且支持GPU,有着更高级而又易用的功能,可以用来快捷地构建和训练深度神经网络。一经发布,PyTorch便受到深度学习和开发者们广泛关注和讨论。经过一年多的发展,目前PyTorch已经成为机器学习和深度学习者重要的研究和开发工具之一。
张量是PyTorch里的基本运算单位,与numpy的ndarray相同都表示一个多维的矩阵。与ndarray最大的区别在于Tensor能使用GPU加速,而ndarray只能用在CPU上。
1、导入torch库
import torch
a = torch.tensor([1,2,3],dtype=int)
b = torch.tensor([4,5,6],dtype=float)
print(a)
print(a.dtype)
print(b)
//结果
//tensor([1, 2, 3])
//torch.int64 64位的int类型
//tensor([4., 5., 6.], dtype=torch.float64)
2、数据的维度
tensor = torch.tensor([[1,2,3],[4,5,6]]) print(tensor.ndim) //结果 //2
3、数据的形状
tensor = torch.tensor([[1,2,3],[4,5,6]]) print(tensor.shape) print(tensor.size()) //结果 //torch.Size([2, 3]) //torch.Size([2, 3])
4、基础运算
sample = torch.rand(3, 2)
print(sample)
# 求总和
print(torch.sum(sample))
# 求最小值
print(torch.min(sample))
# 求最小值所在的位置(索引)
print(torch.argmin(sample))
# 求最大值所在的位置(索引)
print(torch.argmax(sample))
# 求平均值
print(torch.mean(sample))
# 求中位数
print(torch.median(sample))
# 求开方
print(torch.sqrt(sample))
# 求平方
print(sample ** 2)
//结果
tensor([[0.9740, 0.4381],
[0.9116, 0.7061],
[0.9465, 0.0322]])
tensor(4.0085)
tensor(0.0322)
tensor(5)
tensor(0)
tensor(0.6681)
tensor(0.7061)
tensor([[0.9869, 0.6619],
[0.9548, 0.8403],
[0.9729, 0.1793]])
tensor([[0.9487, 0.1919],
[0.8310, 0.4986],
[0.8960, 0.0010]])
import torch
a = torch.tensor([1,2,3],dtype=int)
b = torch.tensor([4,5,6],dtype=float)
print(a)
print(a.dtype)
print(b)
//结果
//tensor([1, 2, 3])
//torch.int64 64位的int类型
//tensor([4., 5., 6.], dtype=torch.float64)
def load_array(data_arrays, batch_size, is_train=True): #@save
# 构造一个PyTorch数据迭代器
# torch.utils.data.TensorDataset(Dataset):包装数据和目标张量的数据集,直接传入张量参数即可(*tensor)
# 该类通过每一个 tensor 的第一个维度进行索引。因此,该类中的 tensor 第一维度必须相等。
dataset = data.TensorDataset(*data_arrays)
# 通过DataLoader类从dataset中选取数据,每次读取大小为batch_size
return data.DataLoader(dataset, batch_size, shuffle=is_train)
batch_size = 10
# 传入张量数组,返回一个可迭代的张量组
data_iter = load_array((features, labels), batch_size)