Pytorch入门

前言

  • Torch是一个科学计算框架,广泛支持将GPU放在首位的机器学习算法。

  • PyTorch是一个基于Torch的python机器学习库,底层由 C++ 实现。

  • PyTorch 主要有两大特征:

    • 类似于 NumPy 的张量计算,能在 GPU 或 MPS 等硬件加速器上加速。

    • 基于带自动微分系统的深度神经网络。

安装Pytorch

有conda和pip两种安装方式,参考Previous PyTorch Versions根据使用版本安装,Wheel表示使用pip安装,Conda表示使用conda安装,OSX和Linux and Windows表示操作系统。注意在镜像源下载的是cpu版本,必须在官网安装,检查代码如下

import torch
print(torch.__version__) # 检查Pytorch的版本
print(torch.cuda.is_available()) # 检查当前环境能否使用CUDA

torch.cuda.is_available()返回false,解决方法参考torch.cuda.is_available()返回false——解决办法

基础

张量(Tensor)

张量可以视为多维数组。

张量可以运行在不同设备上,比如CPU和GPU,可以将张量移动到 GPU 上加速计算。

张量支持自动微分。

详细介绍可以参考PyTorch 张量(Tensor) | 菜鸟教程

out.backward() # 反向传播,计算梯度
print(x.grad) # 查看 x 的梯度

nn.Module

我们可以继承 nn.Module 类来构建神经网络模型。

import torch.nn as nn
import torch.optim as optim
​
# 定义一个简单的全连接神经网络
class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.fc1 = nn.Linear(2, 2)  # 输入层到隐藏层
        self.fc2 = nn.Linear(2, 1)  # 隐藏层到输出层
    
    def forward(self, x):
        x = torch.relu(self.fc1(x))  # ReLU 激活函数
        x = self.fc2(x)
        return x

nn.Sequential

我们可以用 nn.Sequential 来按顺序组织神经网络层。

import torch
import torch.nn as nn
​
model = nn.Sequential(
   nn.Linear(n_in, n_h),  # 输入层到隐藏层的线性变换
   nn.ReLU(),            # 隐藏层的ReLU激活函数
   nn.Linear(n_h, n_out),  # 隐藏层到输出层的线性变换
   nn.Sigmoid()           # 输出层的Sigmoid激活函数
)

nn.functional

nn.functional 提供了大量的神经网络函数,包括激活函数,损失函数,池化操作,卷积操作等。

import torch
import torch.nn.functional as F
​
x = torch.randn(3, 4)
​
# ReLU
output = F.relu(x)
​
# 最大池化
x = torch.randn(1, 3, 32, 32)
output = F.max_pool2d(x, kernel_size=2, stride=2)
​
predictions = torch.randn(32, 10)
targets = torch.randint(0, 10, (32,))
​
# 交叉熵损失
loss = F.cross_entropy(predictions, targets)
​
# 卷积
x = torch.randn(1, 3, 32, 32)
weight = torch.randn(16, 3, 3, 3)
bias = torch.randn(16)
​
conv_output = F.conv2d(x, weight, bias, stride=1, padding=1)

数据处理和加载

torch.utils.data.Dataset 是一个抽象类,允许你从自己的数据源中创建数据集。

torch.utils.data.DataLoader 用于从 Dataset 中按批次(batch)加载数据。

torchvision.transforms 用于进行常见的图像预处理和增强操作,如旋转、裁剪、归一化等。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值