在PyTorch中,张量(Tensors)是核心数据结构,它是多维数组,可以被用来表示各种数学对象,如标量、向量、矩阵甚至是高维数组。张量在深度学习中扮演着至关重要的角色,因为它们被用来存储模型的参数和中间计算结果。 1. **张量的概念**: - 标量(0阶张量):单个数值。 - 向量(1阶张量):一维数组。 - 矩阵(2阶张量):二维数组,类似于表格。 - 张量(大于等于3阶张量):多于两维的数组,可以理解为更高维度的矩阵。 2. **创建张量的方法**: - `torch.tensor()`: 使用现有数据创建张量,例如 `torch.tensor([[1., -1.], [1., -1.]])`。 - `torch.*()`: 如 `torch.randn()` 可以创建满足标准正态分布的随机数据张量。 - `torch.*_like()`: 如 `torch.rand_like()` 可以创建与给定张量形状相同的张量。 - `tensor.new_*`: 用于创建与张量类型相同但大小不同的新张量。 3. **张量属性**: - `tensor.dtype`: 查看张量的数据类型,如 `torch.float32`。 - `tensor.shape`: 查看张量的形状或尺寸。 - `tensor.ndim`: 查看张量的维度。 - `tensor.is_cuda`: 检查张量是否存储在GPU上。 - `tensor.grad`: 查看张量的梯度,用于自动求导。 4. **张量在CPU和GPU间的转换**: - `cpu_tensor.cuda()`: 将CPU张量转移到GPU。 - `gpu_tensor.cpu()`: 将GPU张量转移到CPU。 - `torch.from_numpy(numpy_array)`: 从NumPy数组创建CPU张量。 - `cpu_tensor.numpy()`: 将CPU张量转换为NumPy数组。注意,GPU张量必须先转到CPU才能转为NumPy数组。 - 对于标量张量,可以使用 `tensor.item()` 获取其值。 5. **Tensor与NumPy的异同**: - 相同点:两者都能创建多维数组并进行数学运算。 - 不同点: - NumPy的数组类型为 `numpy.ndarray`,PyTorch的张量类型为 `torch.Tensor`。 - NumPy的运算在CPU上执行,PyTorch可以在GPU上加速运算(如果可用)。 - NumPy导入方式是 `import numpy as np`,PyTorch是 `import torch`。 - PyTorch的张量有额外的属性,如 `device`(是否在GPU上)和 `requires_grad`(是否需要计算梯度)。 6. **张量与NumPy函数对比**: - 数据类型:PyTorch支持与NumPy类似的浮点数和整数类型。 - 创建张量:`torch.tensor()` 相当于 NumPy 的 `np.array()`。 - 数值操作:PyTorch的 `torch.mm` 类似于 NumPy 的 `np.dot`。 - 张量操作:PyTorch的 `torch.reshape()` 和 `torch.view()` 用于改变张量形状,`torch.cat()` 用于合并张量。 在深度学习实践中,PyTorch的张量不仅提供了高效的数值计算,还支持自动求导(autograd),这是训练神经网络的关键特性。了解和熟练掌握张量的创建、操作和转换,是使用PyTorch进行深度学习的基础。
剩余39页未读,继续阅读
- 粉丝: 70
- 资源: 313
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0