赞
踩
第一章 Pytorch中张量(Tensor)的生成
PyTorch
是一个开源的深度学习框架,基于Python语言。它由Facebook的人工智能研究团队于2016年开发并发布。
PyTorch
提供了一种灵活的、动态的计算图模型,使得开发者可以方便地构建和训练神经网络模型。PyTorch
采用了动态图
的方式,即在运行时才构建计算图,这与静态图的框架相比具有更大的灵活性和易用性。开发者可以使用Python的控制流语句
和标准库函数
来定义和操作计算图,这使得模型的编写和调试变得更加简单和直观。
PyTorch
还提供了丰富的工具和库,用于大规模训练和部署深度学习模型。其中包括数据加载和预处理
、模型定义
、优化算法
、可视化
等功能。
此外,PyTorch
还与许多其他常用的Python库和工具集成,如NumPy
、SciPy
和Jupyter Notebook
。
总之,
PyTorch
是一个强大而灵活的深度学习框架,它在易用性、灵活性和性能方面都具有优势,使得开发者可以更加自由地进行深度学习模型的设计、训练和部署。
张量
是一种数学对象,可以用来表示多维数组
或多维矩阵
。
张量
在深度学习和神经网络中也被广泛应用,用于表示和处理大规模数据集。
在torch中CPU和GPU张量分别有8种数据类型:
数据类型 | Dtype | CPU Tensor | GPU Tensor |
---|---|---|---|
32位浮点型 | Torch.float或torch.float32 | torch.FloatTensor | torch.cuda.FloatTensor |
64位浮点型 | Torch.double或torch.float64 | torch.DoubleTensor | torch.cuda.DoubleTensor |
16位浮点型 | Torch.half 或torch.float16 | torch.HalfTensor | torch.cuda.HalfTensor |
8位无符号整型 | Torch.uint8 | torch.ByteTensor | torch.cuda.ByteTensor |
8位有符号整型 | Torch.int8 | torch.CharTensor | torch.cuda.CharTensor |
16位有符号整型 | Torch.short 或Torch.int16 | torch.ShortTensor | torch.cuda.ShortTensor |
32位有符号整型 | Torch.int或Torch.int32 | torch.IntTensor | torch.cuda.IntTensor |
64位有符号整型 | Torch.long 或Torch.int64 | torch.LongTensor | torch.cuda.LongTensor |
Torch
中默认数据类型为:torch.FloatTensor
和torch.int64
如果要修改默认数据类型可以使用函数:
torch.set_default_tensor_type()
(注:此函数只有torch.DoubleTensor
和torch.FloatTensor
两个参数)
①自动生成情况分析:
# 引入库 import torch # 创建张量 a = torch.tensor([1, 2]) # 均为整数 print(a.dtype)
- 1
- 2
- 3
- 4
- 5
- 6
输出结果为:torch.int64
# 引入库 import torch # 创建张量 a = torch.tensor([1.2, 2]) # 涉及到小数 print(a.dtype)
- 1
- 2
- 3
- 4
- 5
- 6
输出结果为:torch.float32
②修改后情况分析:
# 引入库 import torch # 创建张量 torch.set_default_tensor_type(torch.DoubleTensor) a = torch.tensor([1, 2]) print(a.dtype)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
输出结果为:torch.int64
# 引入库 import torch # 创建张量 torch.set_default_tensor_type(torch.DoubleTensor) a = torch.tensor([1.2, 2]) print(a.dtype)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
输出结果为:torch.float64
①张量生成:
A = torch.tensor([[1, 1], [2, 2]])
在深度学习
中需要对梯度
大小进行更新,所以需要计算梯度,需注意只有浮点型数据
才可以计算梯度。
B = torch.tensor([[1, 1], [2, 2]], dtype=torch.float32, >requires_grad=True)
- 1
输出结果为:tensor([[1., 1.],[2., 2.]], dtype=torch.float32, requires_grad=True)
其中dtype
设置数据类型,requires_grad
设置是否需要计算梯度。
函数 | 描述 |
---|---|
torch.zeros(3, 3) | 3*3的全0张量 |
torch.ones(3, 3) | 3*3的全1张量 |
torch.eye(3, 3) | 3*3的单位张量 |
torch.full((3, 3) , full_value=0.25) | 3*3使用0.25填充的张量 |
torch.empty(3, 3) | 3*3的空张量 |
torch.rand(3, 3) | 3*3的随机张量 |
torch.ones_like(A) | 与A大小相同的全1张量 |
torch.zeros_like(A) | 与A大小相同的全0张量 |
torch.rand_like(A) | 与A大小相同的随机张量 |
torch.ones_like(A) | 与A大小相同的全1张量 |
torch.arange(start=0, end=2, step=1) | tensor([0, 1]) |
②张量信息获取:
获取张量维度:
# 获取张量维度 A_shape = A.shape print(A_shape)
- 1
- 2
- 3
输出结果为:torch.Size([2, 2])
获取张量大小:
# 获取张量维度 A_size = A.size() print(A_size)
- 1
- 2
- 3
输出结果为:torch.Size([2, 2])
获取张量中包含元素数量:
# 获取张量中包含元素数量 A_number = A.numel() print(A_number)
- 1
- 2
- 3
输出结果为:4
张量
在深度学习中起着重要的作用。在深度学习中,数据通常以张量
的形式表示。
张量的数值
存储了模型的参数值
和数据的特征表示
,通过对张量进行运算和优化,可以使模型逐渐学习到更好的特征表示和参数。
张量
的计算和变换是深度学习的核心操作
,它们的高效实现对于深度学习算法的训练和推理过程至关重要
。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。