pytorch官网学习小结

部署运行你感兴趣的模型镜像

安装

用conda创个虚拟环境,直接pip install torch torchvision即可

练习的代码都跑通了 写项目里了 开源项目地址 pytorch/official_tutorial · kimsmith/machine_learning - 码云 - 开源中国 (gitee.com)

pytorch doc链接Quickstart — PyTorch Tutorials 2.5.0+cu124 documentation

quickstart

处理数据

pytorch有两种最原始处理数据的方法:torch.utils.data.dataset和torch.utils.data.dataloader。dataset存储了一些已有的样本和样本对应的label,dataloader封装了dataset

import torch
from torch import nn
from torch.utils.data import DataLoader
from torchvision import datasets
from torchvision.transforms import ToTensor


def prepare_data():
    tr = datasets.FashionMNIST(root='data', train=True, download=True, transform=ToTensor())
    te = datasets.FashionMNIST(root='data', train=False, download=True, transform=ToTensor())

    batch_size = 64
    tr_loader = DataLoader(tr, batch_size=batch_size)
    te_loader = DataLoader(te, batch_size=batch_size)

    for x, y in te_loader:
        print(f'shape of x [n, c, h, w]: {x.shape}')
        print(f'shape of y {y.shape} {y.dtype}')
        break

prepare_data()

国内如果数据下载速度慢 下载不下来,去kaggle开个notebook下载,在notebook直接拷贝上面面代码下载就行

创建模型

class NeuralNetwork(nn.Module):
    def __init__(self):
        super(NeuralNetwork, self).__init__()
        self.flatten = nn.Flatten()
        self.linear_relu_stack = nn.Sequential(
            nn.Linear(28 * 28, 512),
            nn.ReLU(),
            nn.Linear(512, 512),
            nn.ReLU(),
            nn.Linear(512, 10)
        )

    def forward(self, x):
        x = self.flatten(x)
        logits = self.linear_relu_stack(x)
        return logits


def create_model():
    device = 'cuda' if torch.cuda.is_available() else 'mps' if torch.backends.mps.is_available() else 'cpu'
    print(f'device is {device}')
    
    model = NeuralNetwork().to(device)
    print(model)


def main():
    # prepare_data()
    create_model()

训练和测试

def train(dataloader, model, loss_fn, optimizer):
    size = len(dataloader.dataset)
    model.train()
    for batch, (x, y) in enumerate(dataloader):
        x, y = x.to(device), y.to(device)
        
        pred = model(x)
        loss = loss_fn(pred, y)
        loss.backward()
        optimizer.step()
        optimizer.zero_grad()
        
        if batch % 100 == 0:
            loss, current = loss.item(), (batch + 1) * len(x)
            print(f'loss: {loss:>7f} {current:>5d}/{size:>5d}')
            
def test(dataloader, model, loss_fn, optimizer):
    size = len(dataloader.dataset)
    num_batches = len(dataloader)
    model.eval()
    test_loss, correct = 0, 0
    with torch.no_grad():
        for x, y in dataloader:
            x, y = x.to(device), y.to(device)
            pred = model(x)
            test_loss += loss_fn(pred, y).item()
            correct += (pred.argmax(1) == y).type(torch.float).sum().item()
    test_loss /= num_batches
    correct /= size
    print(f'test error:\n accuracy: {(100*correct):>0.1f}%, avg loss:{test_loss:>8f}\n')
    
def train_and_test(tr_loader, te_loader, model):
    # define loss and optimizer
    loss_fn = nn.CrossEntropyLoss()
    optimizer = torch.optim.SGD(model.parameters(), lr=1e-3)
    
    epochs = 5
    for i in range(epochs):
        print(f'epoch: {i + 1}')
        train(tr_loader, model, loss_fn, optimizer)
        test(te_loader, model, loss_fn, optimizer)
    print('train finish')


def main():
    tr_loader, te_loader = prepare_data()
    model = create_model()
    train_and_test(tr_loader, te_loader, model)

保存与加载模型

def save_model(model):
    model_path = "models/fasion_mnist.pth"
    torch.save(model.state_dict(), model_path)
    print(f'save model {model_path} success')
    
    
def load_model_and_test_one(model_path, sample):
    # load model
    model = NeuralNetwork().to(device)
    model.load_state_dict(torch.load(model_path, weights_only=True))
    print('load model success')
    
    # predict one sample
    classes = [
        "T-shirt/top",
        "Trouser",
        "Pullover",
        "Dress",
        "Coat",
        "Sandal",
        "Shirt",
        "Sneaker",
        "Bag",
        "Ankle boot",
    ]
    model.eval()
    x, y = sample[0], sample[1]
    with torch.no_grad():
        x = x.to(device)
        pred = model(x)
        predicted, actual = classes[pred[0].argmax(0)], classes[y]
        print(f'predicted: {predicted}, actual: {actual}')


def main():
    tr_loader, te_loader = prepare_data()
    model = create_model()
    train_and_test(tr_loader, te_loader, model)
    save_model(model)
    model_path = "models/fasion_mnist.pth"
    load_model_and_test_one(model_path, te_loader.dataset[0])

张量

初始化张量

import torch
import numpy as np


def main():
    # directly from list
    data = [[1, 2], [3, 4]]
    x_data = torch.tensor(data)
    print(f'x_data: {x_data}')

    # from np array
    np_array = np.array(data)
    x_np = torch.from_numpy(np_array)
    print(f'x_np: {x_np}')

    # from other tensors
    x_ones = torch.ones_like(x_data)
    print(f'ones tensor:\n {x_ones} \n')

    x_rand = torch.rand_like(x_data, dtype=torch.float)
    print(f'random tensor:\n {x_rand} \n')

    # create tensor by specify shape
    shape = (2, 4)
    rand_t = torch.rand(shape)
    ones_t = torch.ones(shape)
    zeros_t = torch.zeros(shape)
    print(f'rand tensor:\n {rand_t}\n ones_t:\n {ones_t}\n zeros_t:\n {zeros_t}')


if __name__ == '__main__':
    main()

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

<think>好的,我需要帮助用户访问PyTorch的官方网站。首先,根据用户提供的引用内容,特别是引用[1]提到PyTorch的安装比TensorFlow更直接,因为可以通过一条命令同时安装CUDA Toolkit和cuDNN,而这条命令可以在PyTorch官网上找到。所以用户的需求是找到官网链接。 用户的问题直接是询问PyTorch的官方网站,我需要确认正确的网址。根据常见的知识,PyTorch官网应该是https://pytorch.org。不过需要检查引用内容是否有提到具体链接。引用[1]和引用[3]都提到了PyTorch的官方网站,但引用[3]中给出的是networkx的生成器链接和GNN阅读材料,不是PyTorch的。因此,正确的官网链接应该是https://pytorch.org。 接下来,我需要确保回答结构清晰,并包含相关引用。用户可能需要安装指南或文档,所以可以补充官网提供的内容,如安装命令、教程和API文档。同时,根据引用[2],提到数据在GPU和CPU之间的转换,可能用户对GPU支持感兴趣,可以提及官网上的CUDA相关安装选项。 最后,生成相关问题。根据用户可能的后续需求,问题可能涉及安装步骤、GPU支持、学习资源等。需要确保问题与PyTorch官网相关,并覆盖用户可能关心的其他方面。 总结回答要点:提供正确官网链接,简要说明官网内容,引用相关段落,生成相关问题。</think>PyTorch的官方网站是:https://pytorch.org 该网站提供完整的安装指南、教程、API文档和社区支持。在官网首页可以直接获取针对不同操作系统和硬件配置(如CUDA版本)的一键安装命令,这与引用中提到的"通过单一命令安装CUDA ToolKit和cuDNN"特性完全一致[^1]。 官网主要包含以下内容: 1. **快速安装工具**:根据Python版本、操作系统和CUDA版本自动生成安装命令 2. **交互式教程**:包含60分钟入门指南和图像分类实践项目 3. **模型库**:提供计算机视觉、自然语言处理的预训练模型 4. **开发者论坛**:活跃的开发者社区讨论技术问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值