python模型训练

目录

1、新建模型   train_model.py

2、运行模型

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

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

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

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

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

 5、打开网页可视化图形

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

 (2)显示


1、新建模型   train_model.py

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)显示

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值