python模型训练

目录

[1、新建模型 train_model.py](#1、新建模型 train_model.py)

2、运行模型

(1)首先会下载data文件库

(2)完成之后会开始训练模型(10次)

[3、 训练好之后,进入命令集](#3、 训练好之后,进入命令集)

[4、输入命令:python -m tensorboard.main --logdir="C:\Users\15535\Desktop\day6\train"](#4、输入命令:python -m tensorboard.main --logdir="C:\Users\15535\Desktop\day6\train")

(1)目录的绝对路径获得方法

5、打开网页可视化图形

(1)运行完之后会自动有一个网址,点进去

(2)显示


1、新建模型 train_model.py

cpp 复制代码
import torch
import torchvision.transforms
from torch.utils.tensorboard import SummaryWriter
from torchvision import datasets
from torch.utils.data import DataLoader
import torch.nn as nn
from torch.nn import CrossEntropyLoss


#step1.下载数据集

train_data=datasets.CIFAR10('./data',train=True,\
                            transform=torchvision.transforms.ToTensor(),
                            download=True)
test_data=datasets.CIFAR10('./data',train=False,\
                            transform=torchvision.transforms.ToTensor(),
                            download=True)

print(len(train_data))
print(len(test_data))


#step2.数据集打包
train_data_loader=DataLoader(train_data,batch_size=64,shuffle=False)
test_data_loader=DataLoader(test_data,batch_size=64,shuffle=False)

#step3.搭建网络模型

class My_Module(nn.Module):
    def __init__(self):
        super(My_Module,self).__init__()
        #64*32*32*32
        self.conv1=nn.Conv2d(in_channels=3,out_channels=32,\
                             kernel_size=5,padding=2)

        #64*32*16*16
        self.maxpool1=nn.MaxPool2d(2)

        #64*32*16*16
        self.conv2=nn.Conv2d(in_channels=32,out_channels=32,\
                             kernel_size=5,padding=2)

        #64*32*8*8
        self.maxpool2=nn.MaxPool2d(2)

        #64*64*8*8
        self.conv3=nn.Conv2d(in_channels=32,out_channels=64,\
                             kernel_size=5,padding=2)

        #64*64*4*4
        self.maxpool3=nn.MaxPool2d(2)

        #线性化
        self.flatten=nn.Flatten()
        self.linear1=nn.Linear(in_features=1024,out_features=64)
        self.linear2=nn.Linear(in_features=64,out_features=10)

    def forward(self,input):
        #input:64,3,32,32
        output1=self.conv1(input)
        output2=self.maxpool1(output1)
        output3=self.conv2(output2)
        output4=self.maxpool2(output3)
        output5=self.conv3(output4)
        output6=self.maxpool3(output5)
        output7=self.flatten(output6)
        output8=self.linear1(output7)
        output9=self.linear2(output8)

        return output9


my_model=My_Module()
# print(my_model)
loss_func=CrossEntropyLoss()#衡量模型训练的过程(输入输出之间的差值)
#优化器,lr越大模型就越"聪明"
optim = torch.optim.SGD(my_model.parameters(),lr=0.001)

writer=SummaryWriter('./train')
#################################训练###############################
for looptime in range(10):             #模型训练的次数:10
    print("------looptime:{}------".format(looptime+1))
    num=0
    loss_all=0
    for data in (train_data_loader):
        num+=1
        #前向
        imgs, targets = data
        output = my_model(imgs)
        loss_train = loss_func(output,targets)
        loss_all=loss_all+loss_train
        if num%100==0:
            print(loss_train)

        #后向backward 三步法  获取最小的损失函数
        optim.zero_grad()
        loss_train.backward()
        optim.step()

        # print(output.shape)
    loss_av=loss_all/len(test_data_loader)
    print(loss_av)
    writer.add_scalar('train_loss',loss_av,looptime)
    writer.close()
#################################验证#########################
    with torch.no_grad():
        accuracy=0
        test_loss_all=0
        for data in test_data_loader:
            imgs,targets = data
            output = my_model(imgs)
            loss_test = loss_func(output,targets)
            #output.argmax(1)---输出标签
            accuracy=(output.argmax(1)==targets).sum()

            test_loss_all = test_loss_all+loss_test
            test_loss_av = test_loss_all/len(test_data_loader)
            acc_av = accuracy/len(test_data_loader)

        print("测试集的平均损失{},测试集的准确率{}".format(test_loss_av,acc_av))
        writer.add_scalar('test_loss',test_loss_av,looptime)
        writer.add_scalar('acc',acc_av,looptime)

writer.close()

2、运行模型

(1)首先会下载data文件库

(2)完成之后会开始训练模型(10次)

3、 训练好之后,进入命令集

4、输入命令:python -m tensorboard.main --logdir="C:\Users\15535\Desktop\day6\train"

(1)目录的绝对路径获得方法

执行下面的操作自动复制

5、打开网页可视化图形

(1)运行完之后会自动有一个网址,点进去

(2)显示

相关推荐
半条_虫6 分钟前
豆包-网页逆向接口, 免token调用AI
python·ai·shell
kels889925 分钟前
单连接动态增减订阅:股票行情API后端降负载实战方案
开发语言·笔记·python·信息可视化·金融
爱吃程序猿的喵28 分钟前
LingBot-Map 复现与原理剖析:基于 Geometric Context Transformer 的流式 3D 重建
人工智能·python·深度学习·计算机视觉·3d·transformer
梦想不只是梦与想29 分钟前
Python 中的 match-case(模式匹配)
python·match-case
郝同学今天有进步吗31 分钟前
构建 LangGraph Code Review Agent(四):文件过滤与 AnalysisPackage 分包
git·python·ai·code review
a11177638 分钟前
基于PyTorch的动物图像识别系统 开源
人工智能·pytorch·python
qetfw43 分钟前
MWU:Vue 3 + FastAPI 的 MaaFramework 跨平台 WebUI 源码
前端·vue.js·python·fastapi·开源项目·效率工具
测试老哥1 小时前
接口自动化测试分层设计与实践总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
大模型码小白1 小时前
企业级检索增强后端集成:Java 服务如何管理知识库版本
java·服务器·开发语言·人工智能·python·microsoft
农村小镇哥1 小时前
Python3开发快速获取图片的文字
开发语言·python