Python 里 PyTorch 的张量操作全解析

Python 里 PyTorch 的张量操作全解析

关键词:PyTorch、张量操作、深度学习、Python、数据处理

摘要:本文全面深入地解析了 PyTorch 中的张量操作。从背景介绍入手,阐述了 PyTorch 张量操作在深度学习领域的重要性及适用读者群体。接着详细讲解了张量的核心概念、与其他概念的联系,通过示意图和流程图进行直观展示。对核心算法原理用 Python 代码详细阐述,配以数学模型和公式加深理解。在项目实战部分,给出实际案例并详细解读代码。还探讨了实际应用场景,推荐了学习工具和资源。最后总结未来发展趋势与挑战,提供常见问题解答和扩展阅读参考资料,旨在帮助读者全面掌握 PyTorch 的张量操作。

1. 背景介绍

1.1 目的和范围

在深度学习的发展进程中,PyTorch 已经成为了一个非常流行的深度学习框架。PyTorch 中的张量操作是其核心功能之一,它为深度学习模型的构建、训练和优化提供了基础支持。本文的目的在于全面、深入地解析 PyTorch 中的张量操作,包括张量的创建、索引、切片、数学运算、变形等各种操作。通过对这些操作的详细讲解,帮助读者掌握如何灵活运用 PyTorch 张量进行数据处理和模型开发。本文的范围涵盖了 PyTorch 张量操作的基本概念、算法原理、实际应用以及相关的工具和资源。

1.2 预期读者

本文主要面向对深度学习和 PyTorch 感兴趣的初学者和有一定经验的开发者。对于初学者来说,本文可以帮助他们快速入门 PyTorch 张量操作,了解深度学习中的基本数据处理方法;对于有一定经验的开发者来说,本文可以作为一个参考手册,帮助他们深入理解 PyTorch 张量操作的细节,提升开发效率和模型性能。

1.3 文档结构概述

本文将按照以下结构进行组织:

  1. 背景介绍:介绍本文的目的、范围、预期读者和文档结构,以及相关术语的定义。
  2. 核心概念与联系:详细讲解 PyTorch 张量的核心概念,包括张量的定义、属性和与其他概念的联系,并通过示意图和流程图进行直观展示。
  3. 核心算法原理 & 具体操作步骤:用 Python 代码详细阐述 PyTorch 张量操作的核心算法原理,包括张量的创建、索引、切片、数学运算等操作的具体实现步骤。
  4. 数学模型和公式 & 详细讲解 & 举例说明:介绍 PyTorch 张量操作背后的数学模型和公式,通过具体的例子进行详细讲解,帮助读者更好地理解张量操作的本质。
  5. 项目实战:代码实际案例和详细解释说明:给出一个实际的项目案例,包括开发环境的搭建、源代码的详细实现和代码解读,帮助读者将所学的知识应用到实际项目中。
  6. 实际应用场景:探讨 PyTorch 张量操作在深度学习中的实际应用场景,如图像分类、目标检测、自然语言处理等。
  7. 工具和资源推荐:推荐一些学习 PyTorch 张量操作的工具和资源,包括书籍、在线课程、技术博客和网站等。
  8. 总结:未来发展趋势与挑战:总结本文的主要内容,展望 PyTorch 张量操作的未来发展趋势,并分析可能面临的挑战。
  9. 附录:常见问题与解答:解答一些读者在学习 PyTorch 张量操作过程中常见的问题。
  10. 扩展阅读 & 参考资料:提供一些扩展阅读的资料和参考资料,帮助读者进一步深入学习 PyTorch 张量操作。

1.4 术语表

1.4.1 核心术语定义
  • 张量(Tensor):张量是 PyTorch 中最基本的数据结构,类似于多维数组。它可以是标量(0 维张量)、向量(1 维张量)、矩阵(2 维张量)或更高维的数组。
  • 维度(Dimension):张量的维度表示张量的阶数,也称为轴数。例如,标量的维度为 0,向量的维度为 1,矩阵的维度为 2。
  • 形状(Shape):张量的形状表示每个维度上的元素数量。例如,一个形状为 (3, 4) 的张量表示一个 2 维张量,其中第一维有 3 个元素,第二维有 4 个元素。
  • 数据类型(Data Type):张量的数据类型表示张量中元素的数据类型,如 float32、int64 等。
1.4.2 相关概念解释
  • 自动求导(Autograd):PyTorch 的自动求导机制可以自动计算张量的梯度,为深度学习模型的训练提供了便利。
  • CUDA:NVIDIA 开发的并行计算平台和编程模型,PyTorch 可以利用 CUDA 进行 GPU 加速计算。
1.4.3 缩略词列表
  • GPU:图形处理单元(Graphics Processing Unit),用于加速计算。
  • CPU:中央处理单元(Central Processing Unit),计算机的核心计算部件。
  • CUDA:Compute Unified Device Architecture,NVIDIA 开发的并行计算平台。

2. 核心概念与联系

2.1 张量的定义

在 PyTorch 中,张量是一个多维数组,它可以存储和处理各种类型的数据。张量可以是标量、向量、矩阵或更高维的数组。例如,一个标量可以表示为一个 0 维张量,一个向量可以表示为一个 1 维张量,一个矩阵可以表示为一个 2 维张量。以下是一些不同维度张量的示例:

import torch

# 标量(0 维张量)
scalar = torch.tensor(5)
print("Scalar:", scalar)
print("Shape:", scalar.shape)
print("Dimension:", scalar.dim())

# 向量(1 维张量)
vector = torch.tensor([1, 2, 3])
print("Vector:", vector)
print("Shape:", vector.shape)
print("Dimension:", vector.dim())

# 矩阵(2 维张量)
matrix = torch.tensor([[1, 2, 3], [4, 5, 6]])
print("Matrix:", matrix)
print("Shape:", matrix.shape)
print("Dimension:", matrix.dim())

2.2 张量的属性

张量具有一些重要的属性,包括形状(shape)、维度(dim)和数据类型(dtype)。

  • 形状(shape):表示张量在每个维度上的元素数量。可以通过 tensor.shape 来获取张量的形状。
  • 维度(dim):表示张量的阶数。可以通过 tensor.dim() 来获取张量的维度。
  • 数据类型(dtype):表示张量中元素的数据类型。可以通过 tensor.dtype 来获取张量的数据类型。

以下是一个示例:

import torch

tensor = torch.tensor([[1, 2, 3], [4, 5, 6]], dtype=torch.float32)
print("Shape:", tensor.shape)
print("Dimension:", tensor.dim())
print("Data Type:", tensor.dtype)

2.3 张量与其他概念的联系

在深度学习中,张量与自动求导(Autograd)和 CUDA 密切相关。

  • 自动求导(Autograd):PyTorch 的自动求导机制可以自动计算张量的梯度。当一个张量的 requires_grad 属性设置为 True 时,PyTorch 会跟踪该张量的所有操作,并在需要时自动计算其梯度。以下是一个简单的示例:
import torch

# 创建一个需要求导的张量
x = torch.tensor([2.0], requires_grad=True)
y = x ** 2

# 计算梯度
y.backward()
print("Gradient of x:", x.grad)
  • CUDA:PyTorch 可以利用 CUDA 进行 GPU 加速计算。可以通过 tensor.cuda() 方法将张量移动到 GPU 上,通过 tensor.cpu() 方法将张量移动到 CPU 上。以下是一个示例:
import torch

# 检查是否有可用的 GPU
if torch.cuda.is_available():
    device = torch.device("cuda")
else:
    device = torch.device("cpu")

# 创建一个张量并移动到 GPU 上
tensor = torch.tensor([1, 2, 3]).to(device)
print("Tensor on device:", tensor.device)

2.4 文本示意图和 Mermaid 流程图

文本示意图

以下是一个简单的文本示意图,展示了一个 2 维张量的结构:

Tensor (2D):
[[1, 2, 3],
 [4, 5, 6]]
Mermaid 流程图

以下是一个 Mermaid 流程图,展示了张量的创建和操作过程:

创建张量
张量操作
自动求导
CUDA 加速

3. 核心算法原理 & 具体操作步骤

3.1 张量的创建

在 PyTorch 中,可以使用多种方法创建张量。以下是一些常见的创建张量的方法:

3.1.1 使用 torch.tensor() 函数

可以使用 torch.tensor() 函数直接从 Python 列表或 NumPy 数组创建张量。

import torch
import numpy as np

# 从 Python 列表创建张量
tensor_from_list = torch.tensor([1, 2, 3])
print("Tensor from list:", tensor_from_list)

# 从 NumPy 数组创建张量
numpy_array = np.array([4, 5, 6])
tensor_from_numpy = torch.tensor(numpy_array)
print("Tensor from numpy:", tensor_from_numpy)
3.1.2 使用 torch.zeros()torch.ones() 函数

可以使用 torch.zeros()torch.ones() 函数创建全零或全一的张量。

import torch

# 创建全零张量
zeros_tensor = torch.zeros((2, 3))
print("Zeros tensor:", zeros_tensor)

# 创建全一张量
ones_tensor = torch.ones((2, 3))
print("Ones tensor:", ones_tensor)
3.1.3 使用 torch.rand()torch.randn() 函数

可以使用 torch.rand()torch.randn() 函数创建随机张量。torch.rand() 函数创建的张量元素是在 [0, 1) 区间内的均匀分布随机数,torch.randn() 函数创建的张量元素是服从标准正态分布的随机数。

import torch

# 创建均匀分布随机张量
rand_tensor = torch.rand((2, 3))
print("Random tensor (uniform):", rand_tensor)

# 创建正态分布随机张量
randn_tensor = torch.randn((2, 3))
print("Random tensor (normal):", randn_tensor)

3.2 张量的索引和切片

可以使用索引和切片操作来访问和修改张量中的元素。

3.2.1 索引操作

可以使用整数索引来访问张量中的单个元素。

import torch

tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])
print("Element at (0, 1):", tensor[0, 1])
3.2.2 切片操作

可以使用切片操作来访问张量中的一部分元素。

import torch

tensor = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("First row:", tensor[0, :])
print("First column:", tensor[:, 0])
print("Sub-tensor:", tensor[0:2, 1:3])

3.3 张量的数学运算

PyTorch 支持多种张量的数学运算,包括加法、减法、乘法、除法等。

3.3.1 基本数学运算

可以使用运算符或函数来进行基本的数学运算。

import torch

tensor1 = torch.tensor([1, 2, 3])
tensor2 = torch.tensor([4, 5, 6])

# 加法
add_result1 = tensor1 + tensor2
add_result2 = torch.add(tensor1, tensor2)
print("Addition result (operator):", add_result1)
print("Addition result (function):", add_result2)

# 乘法
mul_result1 = tensor1 * tensor2
mul_result2 = torch.mul(tensor1, tensor2)
print("Multiplication result (operator):", mul_result1)
print("Multiplication result (function):", mul_result2)
3.3.2 矩阵乘法

可以使用 torch.matmul() 函数进行矩阵乘法。

import torch

matrix1 = torch.tensor([[1, 2], [3, 4]])
matrix2 = torch.tensor([[5, 6], [7, 8]])

matmul_result = torch.matmul(matrix1, matrix2)
print("Matrix multiplication result:", matmul_result)

3.4 张量的变形

可以使用 reshape()view() 方法对张量进行变形。

import torch

tensor = torch.tensor([1, 2, 3, 4, 5, 6])
reshaped_tensor = tensor.reshape(2, 3)
viewed_tensor = tensor.view(2, 3)

print("Reshaped tensor:", reshaped_tensor)
print("Viewed tensor:", viewed_tensor)

4. 数学模型和公式 & 详细讲解 & 举例说明

4.1 张量的加法

张量的加法是逐元素相加的操作。设两个张量 A \mathbf{A} A B \mathbf{B} B 的形状相同,它们的加法结果 C \mathbf{C} C 定义为:

C i 1 , i 2 , ⋯   , i n = A i 1 , i 2 , ⋯   , i n + B i 1 , i 2 , ⋯   , i n \mathbf{C}_{i_1,i_2,\cdots,i_n} = \mathbf{A}_{i_1,i_2,\cdots,i_n} + \mathbf{B}_{i_1,i_2,\cdots,i_n} Ci1,i2,,in=Ai1,i2,,in+Bi1,i2,,in

其中, i 1 , i 2 , ⋯   , i n i_1,i_2,\cdots,i_n i1,i2,,in 是张量的索引。

以下是一个示例:

import torch

A = torch.tensor([[1, 2], [3, 4]])
B = torch.tensor([[5, 6], [7, 8]])
C = A + B

print("A:", A)
print("B:", B)
print("C:", C)

4.2 张量的乘法

4.2.1 逐元素乘法

逐元素乘法也是逐元素相乘的操作。设两个张量 A \mathbf{A} A B \mathbf{B} B 的形状相同,它们的逐元素乘法结果 C \mathbf{C} C 定义为:

C i 1 , i 2 , ⋯   , i n = A i 1 , i 2 , ⋯   , i n × B i 1 , i 2 , ⋯   , i n \mathbf{C}_{i_1,i_2,\cdots,i_n} = \mathbf{A}_{i_1,i_2,\cdots,i_n} \times \mathbf{B}_{i_1,i_2,\cdots,i_n} Ci1,i2,,in=Ai1,i2,,in×Bi1,i2,,in

以下是一个示例:

import torch

A = torch.tensor([[1, 2], [3, 4]])
B = torch.tensor([[5, 6], [7, 8]])
C = A * B

print("A:", A)
print("B:", B)
print("C:", C)
4.2.2 矩阵乘法

矩阵乘法要求第一个矩阵的列数等于第二个矩阵的行数。设矩阵 A \mathbf{A} A 的形状为 ( m , n ) (m, n) (m,n),矩阵 B \mathbf{B} B 的形状为 ( n , p ) (n, p) (n,p),它们的矩阵乘法结果 C \mathbf{C} C 的形状为 ( m , p ) (m, p) (m,p),定义为:

C i , j = ∑ k = 1 n A i , k × B k , j \mathbf{C}_{i,j} = \sum_{k=1}^{n} \mathbf{A}_{i,k} \times \mathbf{B}_{k,j} Ci,j=k=1nAi,k×Bk,j

以下是一个示例:

import torch

A = torch.tensor([[1, 2], [3, 4]])
B = torch.tensor([[5, 6], [7, 8]])
C = torch.matmul(A, B)

print("A:", A)
print("B:", B)
print("C:", C)

4.3 张量的变形

张量的变形是指改变张量的形状,但不改变其元素的数量和顺序。设一个张量 A \mathbf{A} A 的形状为 ( m 1 , m 2 , ⋯   , m n ) (m_1,m_2,\cdots,m_n) (m1,m2,,mn),变形后的张量 B \mathbf{B} B 的形状为 ( n 1 , n 2 , ⋯   , n k ) (n_1,n_2,\cdots,n_k) (n1,n2,,nk),要求 ∏ i = 1 n m i = ∏ j = 1 k n j \prod_{i=1}^{n} m_i = \prod_{j=1}^{k} n_j i=1nmi=j=1knj

以下是一个示例:

import torch

A = torch.tensor([1, 2, 3, 4, 5, 6])
B = A.reshape(2, 3)

print("A:", A)
print("B:", B)

5. 项目实战:代码实际案例和详细解释说明

5.1 开发环境搭建

为了进行 PyTorch 张量操作的项目实战,需要搭建相应的开发环境。以下是具体的步骤:

5.1.1 安装 Python

首先,需要安装 Python。建议使用 Python 3.6 及以上版本。可以从 Python 官方网站(https://www.python.org/downloads/)下载并安装 Python。

5.1.2 安装 PyTorch

可以使用 pipconda 来安装 PyTorch。根据自己的需求选择合适的安装方式。以下是使用 pip 安装 PyTorch 的示例:

pip install torch torchvision
5.1.3 安装开发工具

可以选择使用 Jupyter Notebook、PyCharm 等开发工具进行代码编写和调试。

5.2 源代码详细实现和代码解读

以下是一个使用 PyTorch 张量操作实现简单线性回归的项目案例:

import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt

# 生成数据集
x = np.linspace(0, 10, 100)
y = 2 * x + 1 + np.random.randn(100) * 0.5

# 将数据转换为 PyTorch 张量
x_tensor = torch.tensor(x, dtype=torch.float32).view(-1, 1)
y_tensor = torch.tensor(y, dtype=torch.float32).view(-1, 1)

# 定义线性回归模型
class LinearRegression(nn.Module):
    def __init__(self):
        super(LinearRegression, self).__init__()
        self.linear = nn.Linear(1, 1)  # 输入维度为 1,输出维度为 1

    def forward(self, x):
        out = self.linear(x)
        return out

model = LinearRegression()

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 训练模型
num_epochs = 1000
for epoch in range(num_epochs):
    # 前向传播
    outputs = model(x_tensor)
    loss = criterion(outputs, y_tensor)

    # 反向传播和优化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    if (epoch + 1) % 100 == 0:
        print(f'Epoch [{epoch + 1}/{num_epochs}], Loss: {loss.item():.4f}')

# 绘制结果
predicted = model(x_tensor).detach().numpy()
plt.plot(x, y, 'ro', label='Original data')
plt.plot(x, predicted, label='Fitted line')
plt.legend()
plt.show()

5.3 代码解读与分析

5.3.1 数据集生成

使用 numpy 生成了一个简单的线性数据集,其中 x 是自变量,y 是因变量,并且添加了一些随机噪声。

5.3.2 数据转换

numpy 数组转换为 PyTorch 张量,并调整形状为 (-1, 1),以便输入到模型中。

5.3.3 模型定义

定义了一个简单的线性回归模型,使用 nn.Linear 层实现。

5.3.4 损失函数和优化器

使用均方误差损失函数 nn.MSELoss() 和随机梯度下降优化器 torch.optim.SGD()

5.3.5 模型训练

通过循环进行多次迭代训练,每次迭代中进行前向传播、计算损失、反向传播和参数更新。

5.3.6 结果绘制

使用 matplotlib 绘制原始数据和拟合直线,直观展示模型的训练结果。

6. 实际应用场景

6.1 图像分类

在图像分类任务中,PyTorch 张量操作可以用于处理图像数据。例如,将图像转换为张量,对图像进行归一化、裁剪、旋转等操作,然后输入到卷积神经网络(CNN)中进行分类。

6.2 目标检测

在目标检测任务中,张量操作可以用于处理图像特征和边界框信息。例如,使用张量进行特征提取、边界框回归和分类,从而实现对图像中目标的检测和定位。

6.3 自然语言处理

在自然语言处理任务中,张量操作可以用于处理文本数据。例如,将文本转换为词向量张量,对词向量进行编码和解码,然后输入到循环神经网络(RNN)或变换器(Transformer)中进行语言建模、文本分类、机器翻译等任务。

6.4 强化学习

在强化学习任务中,张量操作可以用于处理状态、动作和奖励等信息。例如,使用张量表示环境状态,计算动作价值函数,更新策略网络等,从而实现智能体的学习和决策。

7. 工具和资源推荐

7.1 学习资源推荐

7.1.1 书籍推荐
  • 《深度学习》(Deep Learning):由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 所著,是深度学习领域的经典教材,涵盖了深度学习的基本概念、算法和应用。
  • 《动手学深度学习》(Dive into Deep Learning):由 Aston Zhang、Zachary C. Lipton、Mu Li 和 Alexander J. Smola 所著,以 PyTorch 为基础,通过大量的代码示例和实践项目,帮助读者快速掌握深度学习的知识和技能。
7.1.2 在线课程
  • Coursera 上的“深度学习专项课程”(Deep Learning Specialization):由 Andrew Ng 教授授课,包括五门课程,全面介绍了深度学习的各个方面。
  • 李沐的“动手学深度学习”课程:在哔哩哔哩等平台上可以找到,结合了理论讲解和代码实践,适合初学者学习。
7.1.3 技术博客和网站
  • PyTorch 官方文档(https://pytorch.org/docs/stable/index.html):是学习 PyTorch 的权威资料,包含了详细的 API 文档和教程。
  • Medium 上的 PyTorch 相关文章:有很多深度学习领域的专家和开发者在 Medium 上分享 PyTorch 的使用经验和最新研究成果。

7.2 开发工具框架推荐

7.2.1 IDE和编辑器
  • PyCharm:是一款专业的 Python 集成开发环境,提供了丰富的代码编辑、调试和项目管理功能。
  • Jupyter Notebook:是一个交互式的开发环境,适合进行数据探索、模型实验和代码演示。
7.2.2 调试和性能分析工具
  • PyTorch Profiler:可以用于分析 PyTorch 模型的性能,找出性能瓶颈和优化点。
  • TensorBoard:可以用于可视化 PyTorch 模型的训练过程和结果,帮助开发者更好地理解模型的性能。
7.2.3 相关框架和库
  • Torchvision:是 PyTorch 的一个扩展库,提供了常用的图像数据集、模型和图像处理工具。
  • Torchtext:是 PyTorch 的一个扩展库,提供了常用的文本数据集、模型和文本处理工具。

7.3 相关论文著作推荐

7.3.1 经典论文
  • “Gradient-Based Learning Applied to Document Recognition”(LeCun et al., 1998):介绍了卷积神经网络(CNN)的经典架构 LeNet,为图像识别领域的发展奠定了基础。
  • “Long Short-Term Memory”(Hochreiter & Schmidhuber, 1997):提出了长短期记忆网络(LSTM),解决了循环神经网络(RNN)中的梯度消失问题。
7.3.2 最新研究成果
  • 可以关注 NeurIPS、ICML、CVPR 等顶级学术会议的论文,了解 PyTorch 在深度学习领域的最新研究成果。
7.3.3 应用案例分析
  • 可以参考 Kaggle 上的一些 PyTorch 项目案例,学习其他开发者的实践经验和解决方案。

8. 总结:未来发展趋势与挑战

8.1 未来发展趋势

  • 更高效的计算:随着硬件技术的不断发展,PyTorch 将继续优化张量操作的计算效率,充分利用 GPU、TPU 等加速设备,实现更快速的模型训练和推理。
  • 更广泛的应用场景:PyTorch 将在更多的领域得到应用,如医疗、金融、交通等,为这些领域带来新的解决方案和创新。
  • 更强大的功能和工具:PyTorch 社区将不断开发新的功能和工具,如自动超参数调优、模型压缩、分布式训练等,提高开发者的开发效率和模型性能。

8.2 挑战

  • 复杂性管理:随着深度学习模型的不断复杂,PyTorch 张量操作的使用也变得更加复杂。开发者需要花费更多的时间和精力来理解和掌握这些操作,管理模型的复杂性。
  • 可解释性:深度学习模型的可解释性一直是一个挑战。虽然 PyTorch 提供了一些工具和方法来解释模型的决策过程,但仍然需要进一步的研究和发展。
  • 数据隐私和安全:在深度学习应用中,数据隐私和安全是一个重要的问题。PyTorch 需要提供更好的机制来保护数据的隐私和安全,防止数据泄露和恶意攻击。

9. 附录:常见问题与解答

9.1 如何检查 PyTorch 是否安装成功?

可以在 Python 环境中运行以下代码来检查 PyTorch 是否安装成功:

import torch
print(torch.__version__)

如果能够正常输出 PyTorch 的版本号,则说明安装成功。

9.2 如何将张量移动到 GPU 上?

可以使用 tensor.cuda() 方法将张量移动到 GPU 上,使用 tensor.cpu() 方法将张量移动到 CPU 上。例如:

import torch

if torch.cuda.is_available():
    device = torch.device("cuda")
else:
    device = torch.device("cpu")

tensor = torch.tensor([1, 2, 3]).to(device)

9.3 如何进行张量的梯度计算?

可以将张量的 requires_grad 属性设置为 True,然后在需要计算梯度的地方调用 backward() 方法。例如:

import torch

x = torch.tensor([2.0], requires_grad=True)
y = x ** 2
y.backward()
print("Gradient of x:", x.grad)

9.4 如何保存和加载 PyTorch 模型?

可以使用 torch.save() 函数保存模型的参数,使用 torch.load() 函数加载模型的参数。例如:

import torch
import torch.nn as nn

# 定义模型
class SimpleModel(nn.Module):
    def __init__(self):
        super(SimpleModel, self).__init__()
        self.linear = nn.Linear(1, 1)

    def forward(self, x):
        out = self.linear(x)
        return out

model = SimpleModel()

# 保存模型参数
torch.save(model.state_dict(), 'model.pth')

# 加载模型参数
loaded_model = SimpleModel()
loaded_model.load_state_dict(torch.load('model.pth'))

10. 扩展阅读 & 参考资料

  • PyTorch 官方文档:https://pytorch.org/docs/stable/index.html
  • 《深度学习》(Deep Learning):https://www.deeplearningbook.org/
  • 《动手学深度学习》(Dive into Deep Learning):https://d2l.ai/
  • Coursera 深度学习专项课程:https://www.coursera.org/specializations/deep-learning
  • Kaggle 上的 PyTorch 项目:https://www.kaggle.com/
  • NeurIPS、ICML、CVPR 等学术会议的论文:https://neurips.cc/、https://icml.cc/、http://cvpr2023.thecvf.com/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值