resnet18实现cifar10分类

2023-10-28

实验步骤

搭建resnet18网络

数据集加载

模型训练和改进

分析评估

Kaggle提交

网络构建

实验初期拟采用torchvision中实现的resnet18作为网络结构,为了方便修改网络结构,于是重新实现了resnet18网络

resnet18由一个7x7的降采样卷积,一个max pooling层,8个basicblock,一个全局池化层,最后接一个全连接层组成,如下图

image-20211223160315574image-20211223160156154

tensorboard网络结构可视化,左图为torchvision中的resnet实现,右图为自定义实现

代码如下

定义残差块

class IdentityBlock(nn.Module):
    def __init__(self, in_channels, out_channels, down_sampling=False):
        super().__init__()
        self.down_sampling = down_sampling
        self.in_channels = in_channels
        self.out_channels = out_channels
        self.conv1 = nn.Sequential(OrderedDict([
            ('conv1', nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=3,
                                stride=(1 if in_channels == out_channels else 2), padding=1,
                                bias=False)),
            ('bn1', nn.BatchNorm2d(out_channels)),
            ('relu1', nn.ReLU())
        ]))
        self.shortcut = nn.Sequential(OrderedDict([
            (
                'conv',
                nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=1, stride=2, bias=False)),
            ('bn', nn.BatchNorm2d(out_channels))
        ])) if in_channels != out_channels else nn.Sequential()
        self.conv2 = nn.Sequential(OrderedDict([
            ('conv2', nn.Conv2d(in_channels=out_channels, out_channels=out_channels, kernel_size=3, stride=1, padding=1,
                                bias=False)),
            ('bn2', nn.BatchNorm2d(out_channels))
        ]))
        self.relu2 = nn.ReLU()

    def forward(self, x):
        fx = self.conv1(x)
        fx = self.conv2(fx)
        x = self.shortcut(x)
        hx = fx + x
        hx = self.relu2(hx)
        return hx

定义模型网络

class Resnet18(nn.Module):
    def __init__(self, num_classes):
        super(Resnet18, self).__init__()
        self.conv1 = nn.Sequential(OrderedDict([
            ('conv', nn.Conv2d(in_channels=3, out_channels=64, kernel_size=7, stride=2, padding=3, bias=False)),
            ('bn', nn.BatchNorm2d(64)),
            ('relu', nn.ReLU()),
        ]))
        self.max_pool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
        self.layer1 = self.make_layer(64
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

resnet18实现cifar10分类 的相关文章

  • 为什么 RNN 需要两个偏置向量?

    In Pytorch RNN 实现 http pytorch org docs master nn html highlight rnn torch nn RNN 有两个偏差 b ih and b hh 为什么是这样 它与使用一种偏差有什么
  • pytorch 中的 autograd 可以处理同一模块中层的重复使用吗?

    我有一层layer in an nn Module并在一次中使用两次或多次forward步 这个的输出layer稍后输入到相同的layer pytorch可以吗autograd正确计算该层权重的梯度 def forward x x self
  • Blenderbot 微调

    我一直在尝试微调 HuggingFace 的对话模型 Blendebot 我已经尝试过官方拥抱脸网站上给出的传统方法 该方法要求我们使用 trainer train 方法来完成此操作 我使用 compile 方法尝试了它 我尝试过使用 Py
  • 如何更新 PyTorch 中神经网络的参数?

    假设我想将神经网络的所有参数相乘PyTorch 继承自的类的实例torch nn Module http pytorch org docs master nn html torch nn Module by 0 9 我该怎么做呢 Let n
  • 如何计算 CNN 第一个线性层的维度

    目前 我正在使用 CNN 其中附加了一个完全连接的层 并且我正在使用尺寸为 32x32 的 3 通道图像 我想知道是否有一个一致的公式可以用来计算第一个线性层的输入尺寸和最后一个卷积 最大池层的输入 我希望能够计算第一个线性层的尺寸 仅给出
  • 如何有效地对一个数组中某个值在另一个数组中的位置出现的次数求和

    我正在寻找一种有效的 for 循环 避免解决方案来解决我遇到的数组相关问题 我想使用一个巨大的一维数组 A gt size 250 000 用于一维索引的 0 到 40 之间的值 以及用于第二维索引的具有 0 到 9995 之间的值的相同大
  • pytorch 的 IDE 自动完成

    我正在使用 Visual Studio 代码 最近尝试了风筝 这两者似乎都没有 pytorch 的自动完成功能 这些工具可以吗 如果没有 有人可以推荐一个可以的编辑器吗 谢谢你 使用Pycharmhttps www jetbrains co
  • PyTorch 中的连接张量

    我有一个张量叫做data形状的 128 4 150 150 其中 128 是批量大小 4 是通道数 最后 2 个维度是高度和宽度 我有另一个张量叫做fake形状的 128 1 150 150 我想放弃最后一个list array从第 2 维
  • PyTorch 中的交叉熵

    交叉熵公式 但为什么下面给出loss 0 7437代替loss 0 since 1 log 1 0 import torch import torch nn as nn from torch autograd import Variable
  • 保存具有自定义前向功能的 Bert 模型并将其置于 Huggingface 上

    我创建了自己的 BertClassifier 模型 从预训练开始 然后添加由不同层组成的我自己的分类头 微调后 我想使用 model save pretrained 保存模型 但是当我打印它并从预训练上传时 我看不到我的分类器头 代码如下
  • 如何计算cifar10数据的平均值和标准差

    Pytorch 使用以下值作为 cifar10 数据的平均值和标准差 变换 Normalize 0 5 0 5 0 5 0 5 0 5 0 5 我需要理解计算背后的概念 因为这些数据是 3 通道图像 我不明白什么是相加的 什么是除什么的等等
  • Pytorch 与 joblib 的 autograd 问题

    将 pytorch 的 autograd 与 joblib 混合似乎存在问题 我需要并行获取大量样本的梯度 Joblib 与 pytorch 的其他方面配合良好 但是 与 autograd 混合时会出现错误 我做了一个非常小的例子 显示串行
  • 使用 PyTorch 分布式 NCCL 连接失败

    我正在尝试使用 torch distributed 将 PyTorch 张量从一台机器发送到另一台机器 dist init process group 函数正常工作 但是 dist broadcast 函数中出现连接失败 这是我在节点 0
  • Pytorch 中是否有一种方法可以以可反向传播的方式计算唯一值的数量?

    给定以下张量 这是网络的结果 注意 grad fn tensor 121 241 125 1 108 238 125 121 13 117 121 229 161 13 0 202 161 121 121 0 121 121 242 125
  • 尝试将 cuda 与 pytorch 一起使用时出现运行时错误 999

    我为我的 Geforce 2080 ti 安装了 Cuda 10 1 和最新的 Nvidia 驱动程序 我尝试运行一个基本脚本来测试 pytorch 是否正常工作 但出现以下错误 RuntimeError cuda runtime erro
  • 当前向包含多个自动分级节点时,PyTorch 关于使用非完整后向挂钩的警告

    最近升级后 当运行 PyTorch 循环时 我现在收到警告 当前向包含多个自动分级节点时使用非完整后向钩子 训练仍在运行并完成 但我不确定应该将其放置在哪里register full backward hook功能 我尝试将它添加到神经网络
  • 如何在pytorch中动态索引张量?

    例如 我有一个张量 tensor torch rand 12 512 768 我得到了一个索引列表 说它是 0 2 3 400 5 32 7 8 321 107 100 511 我希望从给定索引列表的维度 2 上的 512 个元素中选择 1
  • PyTorch 中的数据增强

    我对 PyTorch 中执行的数据增强有点困惑 现在 据我所知 当我们执行数据增强时 我们保留原始数据集 然后添加它的其他版本 翻转 裁剪 等 但 PyTorch 中似乎并没有发生这种情况 据我从参考文献中了解到 当我们使用data tra
  • PyTorch 中的标签平滑

    我正在建造一个ResNet 18分类模型为斯坦福汽车使用迁移学习的数据集 我想实施标签平滑 https arxiv org pdf 1701 06548 pdf惩罚过度自信的预测并提高泛化能力 TensorFlow有一个简单的关键字参数Cr
  • 如何在 Google Colab 上安装 PyTorch v1.0.0+?

    PyTorch v1 0 0 稳定版是发布于 2018 年 12 月 8 日 https github com pytorch pytorch releases tag v1 0 0成为之后7个月前宣布 https code fb com

随机推荐

  • Mysql 存在既更新,不存在就添加(sql语句)

    版权声明 本文为勇哥原创文章 转载请注明出处哦 https blog csdn net woshihaiyong168 article details 75082668 INSERT 语句的一部分 如果指定 ON DUPLICATE KEY
  • 官方下载 sqlite 数据库,JDK Java开发工具包,Eclipse 跨平台开源集成开发环境 流程。

    官方下载 sqlite 数据库 JDK Java开发工具包 Eclipse 跨平台开源集成开发环境 流程 这两天下载IT编程的开发工具 开发包等 由于英文不好 在官方网址折腾了一些时间 现 在写出流程来 让后来人不再浪费宝贵的时间下载 1
  • [NOI 2014复习]斜率优化(BZOJ 1096、BZOJ 1010)

    1 BZOJ 1096 仓库建设 题目链接 http www lydsy com JudgeOnline problem php id 1096 思路 令 f i 1 i f i 1 i 区间 在第i个工厂建立仓库 所需最少总花费 DP方程
  • 【C语言】小游戏系列——扫雷(内含详细过程)

    我相信扫雷大家并不陌生 小时候经常玩 深受大家的喜欢 今天我们用c语言来编写一个简单的扫雷小游戏 在C语言的学习中 就应该用一些有趣的代码来激励我们 增加我们对编程的热爱 下面我来讲述如何去实现一个扫雷小游戏 正片开始 目录 1 游戏规则
  • 机器学习中的名词解释(一):监督学习、无监督学习、半监督学习、自监督学习(通俗理解)

    机器学习中有几个带有 监督 二字的名词 易混淆 写篇博客解释一下下 1 监督学习 Supervised Learning 是指从标注数据中学习预测模型的机器学习方法 其本质是学习输入到输出的映射的统计规律 映射 两个集合中元素相互对应的关系
  • 远程注册表访问

    远程注册表访问 注册表访问控件 Registry Access控件 是一个用VC编写的Server Component 它封装了对注册表的所有操作 通常用来扩展VB或其它编程工具的注册表访问功能 系统管理员可以把它嵌入ASP页面中 从而实现
  • QT笔记- 在指定目录创建自定义类型的文件

    函数 过程分为两步 指定包含目录的文件名 和 创建文件 使用的类是QFile类 用到的函数如下 QFile QFile const QString name bool QFile open QIODevice OpenModeFlag mo
  • N元线性函数拟合的C++实现

    一元线性方程可以看做是多元函数的特例 现在用矩阵形式表述多元函数情况下 最小二乘的一般形式 设拟合多项式为 各店到这条曲线的距离之和 即偏差平方和如下 对等式右边求ai的偏导数 得到 把这些等式表示成矩阵的形式 就可以得到下面的矩阵 3 进
  • 【Python开发】Flask开发实战:个人博客(四)

    Flask开发实战 个人博客 四 本篇博客将是 Flask开发实战 个人博客 的最后一篇 本篇文章将会详细介绍博客后台的编写 为了支持管理员管理文章 分类 评论和链接 我们需要提供后台管理功能 通常来说 程序的这一部分被称为管理后台 控制面
  • 程序运行时的存储结构

    程序运行时的存储结构 目标程序在目标机器环境下运行时 只是在自己的运行时的存储空间内完成执行 通常 在有操作系统的情况下 程序在自己的逻辑存储空间内存储和运行 因此 编译程序在生成目标代码时应该明确程序的所有对象在逻辑存储空间是如何存储的
  • 安装完Ubuntu 17.10后要做的几件事

    前几天Ubuntu 17 10终于出来了 正好前几天我电脑重装系统 顺便留了一个分区用来装Linux 所以就在我电脑上安装了Ubuntu 17 10 安装过程就不说了 图形化安装程序 基本安装过几次就熟悉了 所以重点 还是安装完成之后的美化
  • 【Golang 面试算法二叉树 手动建树】

    Golang 面试算法二叉树 手动建树 前言 代码实现 前言 面试中有很多有关二叉树的题目 且需要手动建树 这里记录一下如何用Golang来快速构建一个二叉树 代码实现 我们知道二叉树可以扁平化到数组中 当前节点的左右子节点的在数组中的下标
  • Allegro输出光绘文件规范

    光绘输出操作规范 1 1添加钻孔表 添加钻孔表的具体步骤为 1 通过屏幕右边的Visibility选项的Views列表 将Drill层打开 2 将Visibility选项中的PIN和Via选项都选中 见下图所示 1 2添加钻孔文件 参数设好
  • pyTorch onnx 学习(二)

    添加自定义的onnx operations 在pyTorch中定义的网络图以及其运算 在onnx中不一定支持 因此 需要自定义的添加operators 如果onnx支持则可以直接使用 一下是支持的网络以及运算 add nonzero alp
  • Android定制实现上网限制iptables

    随着智能手机和平板的普及 现在的孩子几乎人手一部手机或平板 所以常常能看到一些孩子抱着手机玩游戏或是浏览网页 一玩就是一整天 家长们不免担心自己的孩子是不是会浏览不适合他们看的网页 是不是玩的时间太长 导致他们对其他的事情 比如运动 学习和
  • Windows pytesseract image_to_osd Invalid resolution 0 dpi. Using 70 instead. Too few characters报错及解决

    Windows pytesseract image to osd Invalid resolution 0 dpi Using 70 instead Too few characters报错及解决 1 安装 python3 7 pip in
  • otsu算法_Otsu 灰度图像阈值算法及实现

    人工智能导论课的第一次作业 文末提供 HTML 文件源码 可直接体验 一 简介 我们要做的 其实就是将一张 彩色 图片 转成黑白图片 二值图 二值图 只有黑色或白色 000 或 fff 0 或 255 看看效果图就基本了解了 左原图 右图经
  • Shell Script—多行注释

    在Shell脚本中 没有专门的多行注释 但可以使用一些技巧来实现多行注释的效果 以下是几种实现多行注释的方式 1 使用 使用多个 字符号 在每一行的最前面添加 字符 即可实现注释 bin sh 这是一段示例代码 此处使用了多行注释 注释语法
  • HIVE厂牌艺人_说唱厂牌 Vol.2:洛杉矶天才厂牌Odd Future Records的开始到结束

    We re F kin Radical been F kin Awesome我们太TMD激进 太TMD耀眼Talked a lotta sh t so far words you re at a loss说着一大堆胡话 让你们都不知所措了
  • resnet18实现cifar10分类

    实验步骤 搭建resnet18网络 数据集加载 模型训练和改进 分析评估 Kaggle提交 网络构建 实验初期拟采用torchvision中实现的resnet18作为网络结构 为了方便修改网络结构 于是重新实现了resnet18网络 res