ai
  • index
  • cursor
  • vector
  • crawl
  • crawl-front
  • DrissionPage
  • logging
  • mysql
  • pprint
  • sqlalchemy
  • contextmanager
  • dotenv
  • Flask
  • python
  • job
  • pdfplumber
  • python-docx
  • redbook
  • douyin
  • ffmpeg
  • json
  • numpy
  • opencv-python
  • pypinyin
  • re
  • requests
  • subprocess
  • time
  • uuid
  • watermark
  • milvus
  • pymilvus
  • search
  • Blueprint
  • flash
  • Jinja2
  • secure_filename
  • url_for
  • Werkzeug
  • chroma
  • HNSW
  • pillow
  • pandas
  • beautifulsoup4
  • langchain-community
  • langchain-core
  • langchain
  • langchain_unstructured
  • libreoffice
  • lxml
  • openpyxl
  • pymupdf
  • python-pptx
  • RAGFlow
  • tabulate
  • sentence_transformers
  • jsonl
  • collections
  • jieba
  • rag_optimize
  • rag
  • rank_bm25
  • Hugging_Face
  • modelscope
  • all-MiniLM-L6-v2
  • ollama
  • rag_measure
  • ragas
  • ASGI
  • FastAPI
  • FastChat
  • Jupyter
  • PyTorch
  • serper
  • uvicorn
  • markdownify
  • NormalizedLevenshtein
  • raq-action
  • CrossEncoder
  • Bi-Encoder
  • neo4j
  • neo4j4python
  • matplotlib
  • Plotly
  • Streamlit
  • py2neo
  • abc
  • read_csv
  • neo4jinstall
  • APOC
  • neo4jproject
  • uv
  • GDS
  • heapq
  • 核心概念
    • 1. 张量 (Tensors)
    • 2. 自动微分 (Autograd)
    • 3. 神经网络 (Neural Networks)
    • 4. 训练过程
  • PyTorch 优势
  • 常用扩展库

PyTorch 是一个基于 Python 的科学计算包,主要面向两类人群:

  1. 作为 NumPy 的替代,利用 GPU 的强大计算能力
  2. 提供最大灵活性和速度的深度学习研究平台

核心概念 #

1. 张量 (Tensors) #

PyTorch 的核心数据结构是张量,类似于 NumPy 的 ndarray,但可以在 GPU 上运行以加速计算。

import torch

# 创建张量
x = torch.empty(5, 3)  # 未初始化的矩阵
x = torch.rand(5, 3)   # 随机初始化的矩阵
x = torch.zeros(5, 3, dtype=torch.long)  # 全零矩阵,类型为long
x = torch.tensor([5.5, 3])  # 直接从数据创建

# 张量操作
y = torch.rand(5, 3)
print(x + y)  # 加法
print(torch.add(x, y))  # 另一种加法方式
print(x[:, 1])  # 索引

2. 自动微分 (Autograd) #

PyTorch 的 autograd 包提供了自动求导机制,这是神经网络训练的核心。

# 创建一个张量并设置 requires_grad=True 来跟踪计算
x = torch.ones(2, 2, requires_grad=True)

# 对张量进行操作
y = x + 2
z = y * y * 3
out = z.mean()

# 反向传播
out.backward()

# 打印梯度 d(out)/dx
print(x.grad)

3. 神经网络 (Neural Networks) #

torch.nn 包可以用来构建神经网络。

import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        # 1 input image channel, 6 output channels, 3x3 square convolution
        self.conv1 = nn.Conv2d(1, 6, 3)
        self.conv2 = nn.Conv2d(6, 16, 3)
        # an affine operation: y = Wx + b
        self.fc1 = nn.Linear(16 * 6 * 6, 120)  # 6*6 from image dimension
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

    def forward(self, x):
        # Max pooling over a (2, 2) window
        x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))
        x = F.max_pool2d(F.relu(self.conv2(x)), 2)
        x = x.view(-1, self.num_flat_features(x))
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

    def num_flat_features(self, x):
        size = x.size()[1:]  # all dimensions except the batch dimension
        num_features = 1
        for s in size:
            num_features *= s
        return num_features

net = Net()
print(net)

4. 训练过程 #

典型的训练过程包括:

  1. 定义神经网络
  2. 迭代输入数据
  3. 通过网络处理输入
  4. 计算损失
  5. 反向传播梯度
  6. 更新网络权重
import torch.optim as optim

# 创建网络和优化器
net = Net()
optimizer = optim.SGD(net.parameters(), lr=0.01)

# 训练循环
for epoch in range(2):  # 多次循环数据集
    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        # 获取输入
        inputs, labels = data

        # 梯度清零
        optimizer.zero_grad()

        # 前向传播 + 反向传播 + 优化
        outputs = net(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

        # 打印统计信息
        running_loss += loss.item()
        if i % 2000 == 1999:    # 每2000个小批次打印一次
            print(f'[{epoch + 1}, {i + 1:5d}] loss: {running_loss / 2000:.3f}')
            running_loss = 0.0

print('Finished Training')

PyTorch 优势 #

  1. 动态计算图:PyTorch 使用动态计算图,使得调试更加容易,网络结构可以动态改变。
  2. Python 优先:与 Python 生态无缝集成,代码更加直观。
  3. 强大的 GPU 加速:可以轻松地将计算转移到 GPU 上。
  4. 丰富的预训练模型:通过 torchvision 等包提供大量预训练模型。
  5. 活跃的社区:广泛用于学术研究和工业应用。

常用扩展库 #

  • torchvision:计算机视觉相关工具和预训练模型
  • torchtext:文本处理工具
  • torchaudio:音频处理工具
  • transformers:HuggingFace 提供的各种预训练 Transformer 模型

PyTorch 因其灵活性和易用性,已经成为深度学习研究和应用中最受欢迎的框架之一。

访问验证

请输入访问令牌

Token不正确,请重新输入