Pytorch框架猫狗大战之模型定义与调用

跟我一起学PyTorch-09:PyTorch项目实战 本节介绍PyTorch项目实战,包含三个项目:猫狗大战(图像识别)、新闻分类(文本分类)、命令词识别(语音识别)。 阅读详情

模型调用

首先再models/__init__.py中,有以下代码:

from .alexnet import AlexNet
from .resnet34 import ResNet34
from .squeezenet import SqueezeNet
# from torchvision.models import InceptinV3
# from torchvision.models import alexnet as AlexNet

这样主函数在调用时就可以写成:

from models import AlexNetg
#或
import models
model = models.AlexNet()
#或
import models
model = getattr(models,'AlexNet')().eval()

书中比较推荐的是第三种方法,但是比较绕,个人理解如下:

首先是getattr和eval两个函数的理解:

getattr(x,'foobar')等效于x.foobar,实例参考点击这里

model.eval()是评估模式,用于验证集和测试集,表示我们用验证集或测试集进行评估时,不改变dropout和batch normalization的参数。这篇文章说的比较全面

(工程代码中getattr的第二个参数是opt.model,这需要读取配置文件中的model参数,小白还没有具体研究,待研究明白再来这里做下记录。)这样如果再使用别的模型的时候,只需要修改一个字符串就好了,便于后期维护。

模型定义

在说具体的模型之前,先来研究一下basic_module.py中的用来加载和保存模型的接口,首先是以下两个函数

state_dict(destination = None,prefix = '' ,keep_vars = False)

返回一个包含整个模块训练参数的字典表,key值和参数name相一致,prefix添加前缀

load_state_dict(state_dict,strcict =True)

从传入的 state_dict 中复制 网络训练参数和缓存 到当前网络及其子类中去,如果strict为True,传入的训练参数的key值必须准确匹配当前网络参数的key值

初始化时将类属性model_name设置为模型默认的名字,在config.py中可配置

保存模型时,保存模型的所有参数,文件保存在checkpoints文件下,文件用‘alexnet_月日_时.分.秒.pth’命名,需要注意的是windows系统中文件名不能用‘:’,所以第21行中的冒号改为了点号

加载模型时,传入模型路径即可加载

优化器的选择也封装在这里,采用Adam优化器,后面还有一个Flat类,reshape输入数据用,还没研究明白,搞懂回来补充,上代码!

#coding:utf8
import torch as t
import time


class BasicModule(t.nn.Module):
    """
    封装了nn.Module,主要是提供了save和load两个方法
    """

    def __init__(self):
        super(BasicModule,self).__init__()
        self.model_name=str(type(self))# 模型的默认名字

    def save(self, name=None):
        """
        保存模型,默认使用“模型名字+时间”作为文件名
        """
        if name is None:
            prefix = 'checkpoints/' + self.model_name + '_'
            name = time.strftime(prefix + '%m%d_%H.%M.%S.pth')
        t.save(self.state_dict(), name)
        return name

    def load(self, path):
        """
        可加载指定路径的模型
        """
        self.load_state_dict(t.load(path))

    def get_optimizer(self, lr, weight_decay):
        return t.optim.Adam(self.parameters(), lr=lr, weight_decay=weight_decay)


class Flat(t.nn.Module):
    """
    把输入reshape成(batch_size,dim_length)
    """

    def __init__(self):
        super(Flat, self).__init__()
        #self.size = size

    def forward(self, x):
        return x.view(x.size(0), -1)

 

 

 

本人太菜,个人理解如此,有不对的地方欢迎大家批评指正,哈哈~

猫狗分类,猫狗大战 卷积神经网络实现猫狗识别 阅读详情

相关推荐

深度学习实战---猫狗大战(pytorch实现)

数据准备 猫狗大战数据集下载链接 微软的数据集已经分好类,直接使用就行, 数据划分 我们将猫和狗的图片分别移动到训练集和验证集中,其中90%的数据作为训练集,10%的图片作为验证集,使用shutil.move()来移动图片。 新建文件夹train,test,将数据集放入train中,利用代码将10%的数据移动到test中 文件移动代码 import os import shutil source_path = r"E:\猫狗大战数据集\PetImages" train_dir = os.

暮木的博客 1万+

Python 面向对象--人狗大战(代码)

项目实训 人狗大战 多个人,多条狗,多个品种,年龄,攻击力

菜菜的博客 209万+

Pytorch基于卷积神经网络的猫狗识别

实验环境 Pytorch 1.4.0 conda 4.7.12 Jupyter Notebook 6.0.1 Python 3.7 数据集介绍 实验采用的猫和狗的图片来自 Kaggle 竞赛的一个赛题 Cat vs Dog 的数据集,其中训练数据集包 括 25000 张图片,其中类别为猫的图片有 12500 张图片,类别为狗的图片有 12500 张,两种类别比例为 1:1。训练集有 25000 张,猫狗各占一半。测试集 12500 张,猫狗各占一半。实际上该数据集是 Asirra 数据集的子集。 Asi

Chary的Blog 8147

人狗大战

这两天的人狗大战把人工智能推到了风口浪尖,有人欣赏科技的发达,对未来产生了畏惧,有人把狗吹上了天。对我而言,人工智能没什么好恐惧的,所有的科技进步都在为人类服务,说白了人永远是主子,再厉害的机器永远是奴才。 我对人工智能的了解源于对MATLAB的使用,当时要模拟人在有风力的情况下采用哪种角度游到对岸的时间最短。这里面的算法无法和狗的算法相提并论,但是过程是雷同的,都是在实时分析处理着数据

qianlima210210的专栏 1万+

Pytorch:基于VGG16的迁移学习实现“猫狗大战”

目录前言步骤Python 实现1.aa完整代码总结 前言 VGG是由Simonyan 和Zisserman在文献《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷积神经网络模型,其名称来源于作者所在的牛津大学视觉几何组(Visual Geometry Group)的缩写。 该模型参加2014年的 ImageNet图像分类与定位挑战赛,取得了优异成绩:在分类任务上排名第二,在定位任务上排名第一。 VGG16的网络结

cuishikang的博客 5759

Pytorch--CNN实现kaggle猫狗大战(Dogs vs. Cats)

今天咱们来聊聊用Pytorch的CNN完成kaggle猫狗大战。 话不多说,进入正题。 首先,图片数据来源kaggle,在网站上搜索Dogs vs. Cats很多相关图片集,找一个下载下来。 我这里采用的数据集是: Train:4000张cat + 4000张dog Test:1000张cat + 1000张dog Pytorch版本:(torch 1.3.1+cpu) + (torchvis...

HHH_LLL的博客 4411

CNN入门+猫狗大战(Dogs vs. Cats)+PyTorch入门

CNN入门+猫狗大战+PyTorch实现写在前面猫狗大战介绍CNN介绍卷积(convolution)池化(pooling)全连接(fully connected)一个简单的CNN网络设计PyTorch实现 写在前面 作为一个深度学习新手,参考了许多资料,进行了一些测试,终于在PyTorch框架下实现了一个简单的图像二分类问题,在此总结一下,希望可以给初学者提供一点学习思路。 运行环境: 硬件:In...

l1076604169的博客 3万+

cats-vs-dogs.zip

在已经下载kaggle猫狗大战数据的基础上,先运行pytorch_cat_dog.py,在运行剩下的那两个*,py文件

Python分类实例之猫狗大战

pytorch之猫狗大战编程实战指南比赛数据集介绍(Dogs vs cats)环境配置模型定义数据加载训练和测试结果展示参考 编程实战指南 通过前面课程的学习,相信同学们已经掌握了Pytorch中大部分的基础知识,本节课将结合之前讲的内容,带领同学们从头实现一个完整的深度学习项目。本节课的重点不在于如何使用Pytorch的接口,而在于合理的设计程序的结构,使得程序更具可读性、更易用。 在学习某个深度学习框架时,掌握其基本知识和接口固然重要,但如何合理地组织代码,使代码具有良好的可读性和可扩展性也很关键。在做

ZHW-鲜橙大AI课题组的博客 1万+

目标检测猫狗检测数据集-part2.zip

1、目标检测猫狗检测数据集 2、对猫狗大战数据集进行了标注,共3万多张图片,分为两部分 3、类别为cat和dog,保存在classes.txt中 4、标签格式为xml和txt两种,用于猫狗的目标检测 5、此为第二部分,共1万多张标注好的 图片 6、YOLO、SSD、fasterRCNN猫狗检测

统信UOS服务器上,达梦DM8数据库安装避坑全记录(附大小写敏感设置)

本文详细介绍了在统信UOS服务器版上部署达梦DM8数据库的全过程,包括环境准备、安装流程、数据库实例初始化及关键参数配置,特别是大小写敏感设置的注意事项。提供了从系统配置到性能优化的完整指南,帮助用户避免常见问题,确保数据库稳定运行。

weixin_30647423的博客 332

Pytorch自定义模型实现猫狗分类

摘要 本例采用猫狗大战的部分数据作为数据集,模型是自定义的模型。 训练 1、构建数据集 在data文件夹下面新家train和val文件夹,分别在train和val文件夹下面新家cat和dog文件夹,并将图片放进去。如图: 2、导入库 # 导入库 import torch.nn.functional as F import torch.optim as optim import torch import torch.nn as nn import torch.nn.para.

AI浩 6897

AMD显卡跑MiniMax H3提速30%:SageAttention ROCm适配全记录

在Transformer架构的视频生成模型中,注意力计算往往是性能瓶颈,尤其当显存资源受限时,低精度量化与内核优化成为关键突破口。SageAttention通过将QK^T矩阵乘法量化为INT8,并以FP16/INT4表达注意力概率矩阵,在保证画质的前提下显著降低访存与计算开销,相比传统FlashAttention具备更高速度上限。这一技术价值在本地部署场景尤为突出——当用户使用非NVIDIA显卡运行大型视频模型时,通用优化库常因依赖CUDA而失效。本文聚焦AMD ROCm平台下的MiniMax H3视频生成

weixin_32238157的博客 285

pytorch猫狗大战VGG16

使用PyTorch中的VGG16模型,并对其进行微调以适应特定的图像分类任务。在修改分类层中,创建一个新的分类器,替换VGG16模型的原始分类器。新的分类器包括一个全连接层(线性层)和一些非线性激活和正则化操作。过这一步骤,模型的最后一层从原始的1000类别(ImageNet分类数)修改为适应特定任务的2类别(在这里是猫和狗的分类)# 如果需要微调,可以解冻最后几层# 修改分类层nn.ReLU(),

smsnnb的博客 1242

DAC8568 Controller

DAC8568 ControllerDAC8568 简介串行接口三级目录 DAC8568 简介 PIN Description Name Description LDAC‾\overline{LDAC}LDAC load DACs SYNC‾\overline{SYNC}SYNC 低电平有效,电平触发控制, 该输入为输入数据的帧同步信号. 当SYNC为低,使能DAC内输入移位寄存器,并在随后的所有时钟沿采样数据。 在第32个时钟之后,DAC更新输出。 若不到32个时钟SYNC被置高(即

u010170039的博客 5132

MAX96712解串器MIPI CSI-2输出配置全解析:从Video Pipe映射到DPLL速率设置(以4路YUV422摄像头为例)

本文详细解析了MAX96712解串器在MIPI CSI-2输出配置中的关键步骤,包括Video Pipe映射、寄存器配置和DPLL速率设置。通过具体示例和代码片段,帮助开发者优化4路YUV422摄像头系统的图像传输稳定性和画质表现,适用于汽车电子和工业视觉应用。

weixin_30776273的博客 433

猫狗大战(基于pytorch)

定义数据集和:将所有的图片保存,并进行标签保存训练模型data = []

qingyu9的博客 1418

Spring AI Alibaba Graph进阶:如何用图算法优化你的推荐系统?

本文深入探讨了如何利用Spring AI Alibaba Graph的图算法优化推荐系统。通过分析用户行为数据的网络化特征,结合加权随机游走和社区发现算法,显著提升推荐精准度和用户点击率。文章还分享了混合推荐架构设计、性能优化技巧及生产环境中的实战经验,为开发者提供了一套完整的图算法推荐解决方案。

weixin_33738555的博客 128

基于PyTorch的卷积神经网络图像分类——猫狗大战(一):使用Pytorch定义DataLoader

目录 1. 需要用到的库 2. 数据扩充定义 3. 自定义Dataset 4. 测试 开始一个新的系列,基于Kaggle比赛的猫狗大战数据集,基于PyTorch实现猫狗图像分类。 数据集地址在:https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition/overview。 ...

linghu8812的博客 4754

vivado 编译ADI AD9361 TCL脚本生成hdl工程

(4)输入"source ../../scripts/adi_make.tcl"命令(仅双引号内部命令,不包含双引号),个人理解:该命令用来加载当前所需要编译工程所需要各功能模块的信息,因为每个工程需要不同的功能模块,比如有的需要gpio模块,有的不需要gpio模块,这些模块上前面路径的library也同样以TCL脚本形式存在,当有需要时才进行编译,怎么知道当前工程需要什么模块呢就是通过"source ../../scripts/adi_make.tcl"(仅双引号内部命令,不包含双引号)命令实现。

weixin_40586423的博客 809

用playwright封装一个处理web网页的爬虫,并隐藏自动化特征,自动处理反爬

本文介绍了一个使用Playwright封装的Python爬虫函数,具备反爬对抗能力。该脚本通过移除自动化标志、注入真实用户代理、禁用Chrome自动化属性等措施,有效绕过电商、新闻等中等反爬网站的检测。核心功能包括:隐藏navigator.webdriver标志、模拟人类浏览行为、设置合理的设备参数,并支持代理和延迟加载。使用时需注意避免高频访问并定期更新User-Agent。该方案适用于需要JavaScript渲染的动态网页,性能优于非无头模式。

数据知道的博客 3394

基于Pytorch的猫狗分类

期末作业,废了好几天,哎

m0_53801612的博客 5383

2025年12月GESP真题及题解(C++一级): 小杨的爱心快递

2025年12月GESP真题及题解(C++一级): 小杨的爱心快递

王老师青少年编程 1649

PyTorch深度学习图像分类--猫狗大战

使用Pytorch进行了深度学习中一个案例的练习:猫狗大战,完整的体验了深度学习流程。

JJSXBL的博客 2526

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

图片分类 猫狗大战 pytorch VGG

使用pytorch实现猫狗大战一.简介二.理论三.实现四.总结 一.简介     猫狗大战其实是Kaggle公司(在墨尔本创立的) 于2013年举办的比赛,判断一张输入图像是“猫”还是“狗”,并分别用0,1标识出来。   AI研习社猫狗大战赛题的要求:https://god.yanxishe.com/41 (目前比赛已经结束,但仍可做为练习赛每天提交测试结果)   在这个比赛中,有25000张标记好的猫和狗的图片用做训练,有12500张图片用做测试。这个竞赛是2013年开展的,如果你能够达到80%的准确率,

qduljy的博客 2821

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Pytorch猫狗大战遇见的问题总结

Pytorch猫狗大战遇见的问题总结关于命令行界面关于visdom的运行name 'opt' is not defined'dict' object has no attribute 'iteritems'invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number 本博客的项目代码为《深度学习框架PyTorch:入门与实战》中的代码,参考的PyTorch的入门教程实战这篇博客,

qq_42946328的博客 2013

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: Pytorch框架猫狗大战之数据预处理
下一篇: torch.utils.data.Dataset类和torch.utils.data.DataLoader类
阿瓜瓜瓜
博客等级 码龄9年 18粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值