Python_pytorch(五)模型训练

2023-05-16

反向传播

Loss Function

import torchvision
from torch import nn
from torch.nn import Flatten
from torch.utils.data import DataLoader

dataset=torchvision.datasets.CIFAR10("./data",train=False,transform=torchvision.transforms.ToTensor(),download=True)
data_loader=DataLoader(dataset,batch_size=1)

class My_mod(nn.Module):
    def __init__(self):
        super(My_mod,self).__init__()
        self.conv1=nn.Conv2d(3,32,5,1,2)
        self.maxpool=nn.MaxPool2d(2)
        self.conv2=nn.Conv2d(32,32,5,1,2)
        self.conv3=nn.Conv2d(32,64,5,1,2)
        self.relu=nn.ReLU()
        self.flatten=Flatten()
        self.linear=nn.Linear(1024,10)
        self.model=nn.Sequential(
            nn.Conv2d(3, 32, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 32, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 64, 5, 1, 2),
            nn.MaxPool2d(2),
            Flatten(),
            nn.Linear(1024, 10)

        )
    def forward(self,x):
        x=self.model(x)
        return x
my_mod=My_mod()

loss=nn.CrossEntropyLoss()


for data in data_loader:
    img,target=data
    output=my_mod(img)
    print(output,target)


    ls=loss(output,target)
    ls.backward()

    print((ls))

加上优化器这模型就基本训练起来了?

import torch
import torchvision
from torch import nn
from torch.nn import Flatten
from torch.utils.data import DataLoader

dataset=torchvision.datasets.CIFAR10("./data",train=False,transform=torchvision.transforms.ToTensor(),download=True)
data_loader=DataLoader(dataset,batch_size=64)

class My_mod(nn.Module):
    def __init__(self):
        super(My_mod,self).__init__()
        self.conv1=nn.Conv2d(3,32,5,1,2)
        self.maxpool=nn.MaxPool2d(2)
        self.conv2=nn.Conv2d(32,32,5,1,2)
        self.conv3=nn.Conv2d(32,64,5,1,2)
        self.relu=nn.ReLU()
        self.flatten=Flatten()
        self.linear=nn.Linear(1024,10)
        self.model=nn.Sequential(
            nn.Conv2d(3, 32, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 32, 5, 1, 2),
            nn.MaxPool2d(2),
            nn.Conv2d(32, 64, 5, 1, 2),
            nn.MaxPool2d(2),
            Flatten(),
            nn.Linear(1024, 10)

        )
    def forward(self,x):
        x=self.model(x)
        return x
my_mod=My_mod()

loss=nn.CrossEntropyLoss()
optim=torch.optim.SGD(my_mod.parameters(),lr=0.01)

for i in range(100):
    Lo=0.0
    for data in data_loader:
       
        img,target=data
        output=my_mod(img)
        #print(output,target)

        ls=loss(output,target)
        Lo=Lo+ls
        optim.zero_grad()
        ls.backward()
        optim.step()

    print(Lo)

利用和更改已经存在的模型

import torchvision
from torch import nn

vgg16_T=torchvision.models.vgg16(True)
vgg16_F=torchvision.models.vgg16(False)
print(vgg16_T)
#更改模型

#添加在features里
vgg16_T.add_module("add_linear",nn.Linear(1000,10))
#添加在classifier里面
vgg16_F.classifier.add_module("add_linear",nn.Linear(1000,10))

print(vgg16_T,vgg16_F)

模型的保存和加载

模型的保存

#模型的保存
import torchvision
import torch

vgg16=torchvision.models.vgg16(False)

#模型的保存1 不仅保存了参数,还保存了模型结构
torch.save(vgg16,"./method1.pth")

#模型的保存2 只是保存了参数(官方推荐,占用内存小)
torch.save(vgg16.state_dict(),"./method2.pth")

模型的加载

#模型的加载
import torch
import torchvision

#对于方法1的模型加载(恢复了参数和架构) 注意需要能访问到所需要的架构
model=torch.load("./method1.pth")
print(model)

#对于方法2的模型加载(只有参数)
vgg16=torchvision.models.vgg16(False)
vgg16.load_state_dict(torch.load("./method2.pth"))
print(vgg16)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python_pytorch(五)模型训练 的相关文章

随机推荐

  • windows和虚拟机互传文件的三种方式

    大家好 xff0c 在平时学习工作的时候可能有这样的需求 xff1a 要将windows中的文件传到虚拟机中或者将虚拟机的文件传到windows xff0c 大家都是怎么实现的呢 xff1f 今天给大家介绍下windows和虚拟机互传文件的
  • dpkg命令详解

    用法 xff1a dpkg lt 选项 gt lt 命令 gt Commands i install lt deb file name gt R recursive unpack lt deb file name gt R recursiv
  • 结构体字节对齐之嵌套结构体

    搜狐畅游2020游戏研发笔试题目 xff1a 以下输出的结果是 xff1f xff1f xff1f span class token macro property span class token directive keyword inc
  • 程序设计CSP-M4-补题——T1-TT数鸭子

    T1 TT数鸭子 题目描述InputOutput解题思路实现代码总结 题目描述 给出n个数 xff0c 求有多少个数其数位中不同的数字的个数小于k Input 第一行两个数n k 第二行n个数 Output 输出满足题目要求的数字个数 解题
  • ceph 分布式 存储服务 恢复

    文章目录 一条命令执行恢复 xff08 你最好还是读读 为什么可以一条命令恢复 ceph 服务 xff09 版本信息ceph 容器服务恢复前提条件安装cephadm查看ceph 服务依赖删除多余的集群 可选 一条命令执行恢复 systemc
  • svn: E230001: Server SSL certificate verification failed: certificate issued

    svn E230001 Server SSL certificate verification failed certificate issued 字面上的大致意思是服务器的SSL证书验证失败 解决方法 xff1a 在终端执行svn ls
  • linuxQt程序打包

    linux程序打包 qt程序打包与执行 将release版本生成的移动到新建文件夹中 xff1b linux下qt打包的sh文件 例如 xff0c 生成pack sh span class token shebang important b
  • JAVA判断时间格式为 “YYYY-MM-DD“

    常用的方法如下 xff1a import java text DateFormat import java text SimpleDateFormat import java util Date public class DataTest
  • win系统修改右键新建菜单

    win系统修改右键新建菜单 在右键新建中添加自己想要的文件修改右键新建顺序修改右键新建中菜单项的名字 在右键新建中添加自己想要的文件 首先win 43 R再regedit调出注册表在HKEY CLASSES ROOT目录下找到对应后缀名 x
  • Django基础(一)

    目录 创建项目 创建一个应用 启动服务 创建项目 D pythonProject3 Django gt django admin startproject hello 执行完成命令 大概10s之后会出现一个以hello命名的文件夹 创建一个
  • 二分图多重匹配——小结

    二分图的重匹配 xff0c 说白了就说一对多的匹配 还是匈牙利算法 xff0c 一般都是给出两个集合 xff0c 然后让你对这两个集合进行匹配 xff0c 但是其中一个集合是可以多次匹配的 xff0c 但是匹配的次数是有限的 xff08 假
  • C.Garland(DP)

    题目链接 xff1a C Garland 题意 给你了一个序列 xff0c 包含n个数 xff0c 这个序列是由1 n数字构成 xff0c 但是题目给你的这个序列并不完整 xff0c 让你去补完整 xff0c 那些输入的值为0的位置的就是让
  • P1908 逆序对(离散化)

    洛谷P1908 逆序对 逆序对就不用解释了 xff0c 题上也说的很清楚 那我分别用归并排序和树状数组来解决一下这道题目 归并排序 我们都知道 xff0c 归并排序是通过把大区间一直分 xff0c 分成小区间 xff0c 然后小区间排序好了
  • Codeforces Round #618 (Div. 2)

    太菜了 xff0c 也只能补补题了 A Non zero 这道题瞎弄一下就过了 xff0c 数0的个数 xff0c 把0全变成1 xff0c 然后再判断现在和是不是0 xff0c 和是0的话就再加上1 span class token ma
  • HDU 1025最长递增子序列(二分法)

    最长递增子序列 xff08 二分 xff09 HDU1025 https www felix021 com blog read php 1587 找最长递增子序列 xff0c 以前一般用DP的方法找 xff0c 因为理解简单 xff0c 实
  • Codeforces Round #658 (Div. 2)

    比赛链接 xff1a https codeforces com contest 1382 A Common Subsequence 题意 给你两组数 xff0c 问你有没有相同 的书 xff0c 有的话 xff0c 输出最短的那组 xff0
  • mysql学习笔记之数据库

    我的mysql学习参考于github文章 数据库 xff1a 高效的存储和处理数据的介质 xff08 比如磁盘和内存 xff09 xff0c 又根据介质的不同 xff0c 分为关系数据库和非关系数据 关系数据库特点 xff1a 1 xff0
  • Python_pytorch (三)分解网络模型

    python pytorch 小土堆pytotch学习视频链接 from的是一个个的包 xff08 package import 的是一个个的py文件 file py 所使用的一般是文件中的类 class 第一步实例化所使用的类 然后调用类
  • Python_pytorch(四)网络搭建

    搭建架构 span class token keyword import span torch span class token keyword import span torchvision span class token keywor
  • Python_pytorch(五)模型训练

    反向传播 Loss Function span class token keyword import span torchvision span class token keyword from span torch span class