首页 > 其他分享 >Pytorch高级api搭建多层感知机实战

Pytorch高级api搭建多层感知机实战

时间:2023-05-30 21:13:31浏览次数:50  
标签:target nn data torch 感知机 Pytorch api test True

Pytorch高级api搭建多层感知机实战

代码

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

from torchvision import datasets, transforms

batch_size = 200
learning_rate = 0.01
epochs = 10

train_loader = torch.utils.data.DataLoader(
    datasets.MNIST('../data',train=True,download=True,
                   transform=transforms.Compose([
                       transforms.ToTensor(),
                       transforms.Normalize((0.1307,),(0.3081,))
                   ]
                   )),
    batch_size=batch_size,shuffle=True,pin_memory=True  # pin_memory=True将数据加载到固定的内存中,以加快数据传输速度
)

test_loader = torch.utils.data.DataLoader(
    datasets.MNIST('../data',train=False,download=True,
                   transform=transforms.Compose([
                       transforms.ToTensor(),
                       transforms.Normalize((0.1307,),(0.3081,))
                   ]
                   )),
    batch_size=batch_size,shuffle=True,pin_memory=True
)


class MLP(torch.nn.Module):
    def __init__(self):
        super(MLP,self).__init__()
        
        # 定义了一个包含多个线性层和LeakyReLU激活函数的前向计算模块
        self.model = torch.nn.Sequential(
            torch.nn.Linear(784,200),
            torch.nn.LeakyReLU(inplace=True),
            torch.nn.Linear(200, 200),
            torch.nn.LeakyReLU(inplace=True),
            torch.nn.Linear(200, 10),
            torch.nn.LeakyReLU(inplace=True),
        )

    def forward(self,x):
        x = self.model(x)

        return x

# 确定使用的设备(GPU或CPU),并将定义的MLP模型移动到该设备上
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
net = MLP().to(device)


optimizer = optim.SGD(net.parameters(),lr=learning_rate)
criteon = torch.nn.CrossEntropyLoss()

for epoch in range(epochs):
    """这是训练过程的主循环。对于每个epoch,循环遍历训练数据加载器中的每个批次。将输入数据和目标标签移动到相同的设备上。通过模型进行前向传播,计算输出logits。然后,使用损失函数计算预测结果和目标标签之间的损失。接下来,执行优化器的相关操作,包括梯度清零、反向传播和参数更新。如果批次索引是100的倍数,则打印训练进度信息。""" 
    for batch_idx,(data,target) in enumerate(train_loader):
        # 将输入数据和目标标签移动到相同的设备上
        data = data.view(-1,28*28).to(device)
        target =target.to(device)

        logits = net(data)
        loss = criteon(logits,target)

        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

        if (batch_idx % 100) == 0:
            print('Train Epoch:{} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
                epoch,
                batch_idx * len(data),
                len(train_loader.dataset),
                100. * batch_idx / len(train_loader),
                loss.item()
            ))
            
    
    """这段代码用于在训练完成后对模型进行测试。循环遍历测试数据加载器中的每个批次。将输入数据和目标标签移动到设备上,通过模型进行前向传播,计算输出logits。使用损失函数计算预测结果和目标标签之间的损失,并将其累加到test_loss变量中。计算预测的标签,并统计正确的预测数量。最后,计算平均测试损失和准确率,并打印结果。"""
    test_loss = 0
    correct = 0
    for data,target in test_loader:
        data = data.view(-1,28 * 28).to(device)
        target = target.to(device)
        logits = net(data)
        test_loss += criteon(logits,target).item()

        pred = logits.data.max(1)[1]
        correct += pred.eq(target).sum().item()

    test_loss /= len(test_loader.dataset)
    print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format(
        test_loss,
        correct,
        len(test_loader.dataset),
        100. * correct / len(test_loader.dataset)
    ))

标签:target,nn,data,torch,感知机,Pytorch,api,test,True
From: https://www.cnblogs.com/dxmstudy/p/17444471.html

相关文章

  • 在树莓派上实现numpy的conv2d卷积神经网络做图像分类,加载pytorch的模型参数,推理mnist
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是卷积识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorchvisionimportdatasets,transformsimportn......
  • "以API接口快速获得aliexpress速卖通商品详情-返回值说明
     为了方便商家获取速卖通上的商品信息,速卖通提供了API接口来获取商品数据。本文将介绍如何通过API接口获取速卖通商品数据。一、申请API接口权限在使用API接口前,首先需要在速卖通官网注册账号并通过实名认证。然后,在个人资料页面找到开发者中心,申请API接口权限。在申请权限时,需要......
  • Elasticsearch专题精讲——API规范—— 基于 URL 的访问控制
    API规范——基于URL的访问控制https://www.elastic.co/guide/en/elasticsearch/reference/8.8/api-conventions.html#api-url-access-control Elasticsearch中的multi-search(多搜索)、multi-get(多获取)和bulk(批量请求)是在一个请求中执行多个操作的方法。如果使用基于URL......
  • 在树莓派上使用numpy实现简单的神经网络推理,pytorch在服务器或PC上训练好模型保存成nu
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是mlp识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:1importtorch2importtorch.nnasnn3importtorch.optimasoptim4fromtorchvisionimportdatasets,transfor......
  • 1688API商品详情页数据,接口封装
    首先,大家要到官方主页去申请一个 appkey,这个是做什么用的呢?AppKey是应用的唯一标识,TOP通过AppKey来鉴别应用的身份。AppSecret是TOP给应用分配的密钥,开发者需要妥善保存这个密钥,这个密钥用来保证应用来源的的可靠性,防止被伪造。就是说嘛,想要进门可要先有钥匙啊,所以,appke......
  • 加密api研究
    实验一-密码引擎-加密API研究0、查找各种标准的原始文档,研究学习(至少包含CryptoAPI,PKCS#11,GMT0016-2012,GMT0018-2012)(1)CryptoAPI:作为一部分MicrosoftWindows提供的应用程序编程接口(API),CryptoAPI提供了一组函数。这些函数允许应用程序在对用户的敏感私钥数据提供......
  • 飞书机器人与飞书后台API的一些操作记录
    在飞书群组里面选择“设置”——“群机器人”——“添加机器人”——“自定义机器人”webhook地址,俗称网络勾子,可以通过该地址给这个群组通过一个叫“自定义机器人”(名字在创建机器人时可以修改)的发言。自定义关键词,发送的消息必须包含关键词才会被发送。IP白名单,可以设置ip......
  • 【2023 · CANN训练营第一季】昇腾AI入门课(PyTorch)之模型迁移
    昇腾AI入门课(PyTorch)之模型迁移将基于PyTorch的训练脚本迁移到昇腾AI处理器上进行训练,目前有以下3种方式:自动迁移(推荐)、工具迁移、手工迁移,且迁移前要保证该脚本能在GPU、CPU上运行。自动迁移:训练时,在训练脚本中导入脚本转换库,导入后执行训练。训练脚本在运行的同时,会将脚本中的CUD......
  • 【2023 · CANN训练营第一季】昇腾AI入门课(PyTorch)之AI应用开发入门
    图片googlenet分类样例首先在华为云上购买一台弹性云服务器,远程登陆到服务器上。#修改HwHiAiUser的shell为bashvim/etc/passwd切换为HwHiAiUser用户su-HwHiAiUser下载sample样例库gitclonehttps://gitee.com/ascend/samples.git获取此应用中所需要的原始网络模型#进入模型......
  • OpenAI API 代理
    由于OpenAI及GFW的双重限制,国内用户无法访问OpenAI的API,现提供代理服务地址供开发者免费使用。✅代理地址:https://api.openai-proxy.com,支持OpenAI官方所有接口。本服务只做代理中转,不会保存任何数据!......