*前序知识:Python的基本语法、操作和控制结构;库函数的基本使用方法。
*本文将在给出中文名称的同时,附上英文词汇。
*所有英文缩写将在第一次出现时注明。
*Package version:Python==3.8.20;pyorch==2.4.1;numpy==1.24.4。
目录
Pytorch是深度学习中常用的库之一。从本文开始,博主计划用一个专栏来更新有关Pytorch的基本操作。作为自己的笔记以便查阅的同时,也希望给初入人工智能领域的萌新们一些帮助~
注:当开始使用深度学习的框架时,建议使用anaconda新建虚拟环境,以免出现不同库之间的、相同库不同版本间的兼容问题。anaconda安装环境的教程优快云上比较多,这里就不作赘述了。
Tensor 简介
在PyTorch中,张量(Tensor)是一个基本的数据结构。
- N维数组:Tensor是一个多维数组(类似于 NumPy 数组)。一个 Tensor可以是向量(1D)、矩阵(2D)、高维数组(3D 等)。
- 支持自动求导:Tensor是PyTorch中构建神经网络的基本元素,具有自动求导的能力,可以帮助计算梯度。
- GPU 加速:Tensor支持在 GPU 上进行计算(CUDA)。
接下来,我们将基于具体的代码,分别讨论Pytorch中Tensor的主要操作。
示例(Coding)
导入Pytorch和Numpy库
同时导入numpy,并不是因为二者存在直接依赖,而是因为torch中的tensor数据结构与numpy可以互相转换。
import torch
import numpy as np
Tensor数据结构的创建
列表(List)转换为Tensor
# 创建一个列表 (list)
data_01 = [[1,2],[3,4]]
# 将列表转换为张量 (tensor)
x_tensor_01 = torch.tensor(data_01)
print(x_tensor_01)
程序输出:
numpy数组转换为Tensor
data_02 = [[5,6],[7,8]]
# 将列表转换为numpy数组 (numpy array)
x_numpy = np.array(data_02)
# 将numpy数组转换为张量 (tensor)
x_tensor_02 = torch.from_numpy(x_numpy)
print(f"n: {
x_numpy}")
print(f"t: {
x_tensor_02}")
程序输出:
numpy数组与Tensor的同时改变
data_02 = [[5,6],[7,8]]
# 将列表转换为numpy数组 (numpy array)
x_numpy = np.array(data_02)
# 将numpy数组转换为张量 (tensor)
x_tensor_02 = torch.from_numpy(x_numpy)
# 改变numpy数组的内容
np.add(x_numpy, 1, out=x_numpy)
# 因为x_tensor_02使用torch.from_numpy(),因此numpy的改变也会映射到张量上
print(f"n: {
x_numpy}")
print(f"t: {
x_tensor_02}"