ResNet18详细原理(含tensorflow版源码)

这篇具有很好参考价值的文章主要介绍了ResNet18详细原理(含tensorflow版源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ResNet18原理

        ResNet18是一个经典的深度卷积神经网络模型,由微软亚洲研究院提出,用于参加2015年的ImageNet图像分类比赛。ResNet18的名称来源于网络中包含的18个卷积层。

ResNet18的基本结构如下:

  • 输入层:接收大小为224x224的RGB图像。
  • 卷积层:共4个卷积层,每个卷积层使用3x3的卷积核和ReLU激活函数,提取图像的局部特征。
  • 残差块:共8个残差块,每个残差块由两个卷积层和一条跳跃连接构成,用于解决深度卷积神经网络中梯度消失和梯度爆炸问题。
  • 全局平均池化层:对特征图进行全局平均池化,将特征图转化为一维

    向量。

  • 全连接层:包含一个大小为1000的全连接层,用于分类输出。
  • 输出层:使用softmax激活函数,生成1000个类别的概率分布。

ResNet18详细原理(含tensorflow版源码)

ResNet18详细原理(含tensorflow版源码) ResNet18详细原理(含tensorflow版源码)

           ResNet18的主要特点是引入了残差块(Residual Block)的概念,用于解决深度卷积神经网络中梯度消失和梯度爆炸问题。在残差块中,跳跃连接(Shortcut Connection)可以将输入直接连接到输出,使得网络可以学习到残差信息,从而更好地进行特征提取和处理。

        在训练过程中,ResNet18一般采用基于随机梯度下降(Stochastic Gradient Descent,SGD)的反向传播算法,通过最小化交叉熵损失函数来优化模型参数。在训练过程中,可以使用数据增强、正则化、dropout等技术来提高模型的泛化能力和鲁棒性。

        总的来说,ResNet18是一个非常经典和有效的深度卷积神经网络模型,具有良好的特征提取和分类能力,可以应用于图像分类、目标检测等计算机视觉任务。

ResNet18源码(tensorflow版)


import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers,datasets,models



def main():
    (train_x,train_y),(test_x,test_y) = datasets.cifar10.load_data()

    train_x = train_x.reshape([-1,32,32,3]) / 255.0
    test_x = test_x.reshape([-1,32,32,3]) / 255.0

    inputs = keras.Input((32,32,3))

    output = ResNet18(inputs)

    model = models.Model(inputs,output)

    model.summary()

    model.compile(loss = keras.losses.SparseCategoricalCrossentropy(),
                  optimizer=keras.optimizers.Adam(0.01),
                  metrics=['accuracy'])
    model.fit(train_x,train_y,batch_size=128,epochs=10)

    score = model.evaluate(test_x,test_y)
    print("loss:",score[0])
    print("acc:",score[1])
    pass

def ConvCall(x,filtten,xx,yy,strides = (1,1)):
    x = layers.Conv2D(filtten,(xx,yy),strides=strides,padding='same')(x)
    x = layers.BatchNormalization()(x)
    return x

def ResNetblock(input,filtten,strides = (1,1)):
    x = ConvCall(input,filtten,3,3,strides=strides)
    x = layers.Activation("relu")(x)

    x = ConvCall(x,filtten,3,3,strides=(1,1))
    if strides != (1,1):
        residual = ConvCall(input,filtten,1,1,strides=strides)
    else:
        residual = input

    x = x + residual
    x = layers.Activation("relu")(x)

    return x

def ResNet18(inputs):
    x = ConvCall(inputs, 64, 3, 3, strides=(1, 1))
    x = layers.Activation('relu')(x)

    x = ResNetblock(x, 64, strides=(1, 1))
    x = ResNetblock(x, 64, strides=(1, 1))

    x = ResNetblock(x, 128, strides=(2, 2))
    x = ResNetblock(x, 128, strides=(1, 1))

    x = ResNetblock(x, 256, strides=(2, 2))
    x = ResNetblock(x, 256, strides=(1, 1))

    x = ResNetblock(x, 512, strides=(2, 2))
    x = ResNetblock(x, 512, strides=(1, 1))
    x = layers.GlobalAveragePooling2D()(x)  # 全局平均池化
    output = layers.Dense(10, "softmax")(x)
    return output


if __name__ == '__main__':
    main()

训练10个epoch的效果

ResNet18详细原理(含tensorflow版源码)

ResNet18详细原理(含tensorflow版源码)

 文章来源地址https://www.toymoban.com/news/detail-441983.html

 

到了这里,关于ResNet18详细原理(含tensorflow版源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ResNet18、50模型结构

    论文地址: https://arxiv.org/pdf/1512.03385.pdf pytorch官方 预训练模型 地址: pytorch官方 resnet网络 代码(包括resnet18、34、50、101、152,resnext50_32x4d、resnext101_32x8d、wide_resnet50_2、wide_resnet101_2): torchvision.models.resnet — Torchvision 0.11.0 documentation https://pytorch.org/vision/stable/_modules/torchvis

    2024年02月06日
    浏览(41)
  • 基于ResNet-18实现Cifar-10图像分类

    安耀辉,男,西安工程大学电子信息学院,22级研究生 研究方向:小样本图像分类算法 电子邮箱:1349975181@qq.com 张思怡,女,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组 研究方向:机器视觉与人工智能 电子邮件:981664791@qq.com CIFAR-10 数据集由 60000张图

    2024年02月06日
    浏览(47)
  • FPGA上利用Vitis AI部署resnet50 TensorFlow神经网络模型

    参考Xilinx官方教程快速入门 • Vitis AI 用户指南 (UG1414) 克隆 Vitis AI 存储库以获取示例、参考代码和脚本(连接github失败可能需要科学上网)。 安装Docker如何在 Ubuntu 20.04 上安装和使用 Docker 安装完docker后,下载最新Vitis AI Docker, 将官方的指令 docker pull xilinx/vitis-ai-pytorch/tensorfl

    2024年02月04日
    浏览(45)
  • 【Tensorflow深度学习】实现手写字体识别、预测实战(附源码和数据集 超详细)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 下面用到的数据集基于IAM数据集的英文手写字体自动识别应用,IAM数据库主要包含手写的英文文本,可用于训练和测试手写文本识别以及执行作者的识别和验证,该数据库在ICDAR1999首次发布,并据此开发了基于隐马尔可夫

    2023年04月08日
    浏览(37)
  • Resnet18训练CIFAR10 准确率95%

    准确率 95.31% 几个关键点: 1、改模型:原始的resnet18首层使用的7x7的卷积核,CIFAR10图片太小不适合,要改成3x3的,步长和padding都要一并改成1。因为图太小,最大池化层也同样没用,删掉。最后一个全连接层输出改成10。 2、图片增强不要太多,只要训练集和验证集结果没有出

    2024年02月02日
    浏览(39)
  • TPU-MLIR实战——ResNet18部署

    1. 编译 ONNX 模型 本章以 resnet18.onnx 为例 , 介绍如何编译迁移一个 onnx 模型至 BM1684X TPU 平台运行。 该模型来自 onnx 的官网 : models/vision/classification/resnet/model/resnet18-v1-7.onnx at main · onnx/models · GitHub 本例模型和代码在 http ://219.142.246.77:65000// sharing/hddTi2adl 下载到本地 model_resnet18

    2024年02月12日
    浏览(36)
  • pytorch 手动顺序搭建resnet18、附带训练代码、测试代码

    文件名:mode_resnet18 去网上随便下载一张图

    2024年02月16日
    浏览(49)
  • 【ResNet18】on IEMOCAP—语音情感识别(预处理篇)

    在开始模型训练前,一定要对数据处理熟悉!   一、预处理: 1、IEMOCAP语音数据部分 按照人(1F,1M,2F,2M,3F,3M,4F,4M,5F,5M): ang有语音数量:[147, 82, 67, 70, 92, 148, 205, 122, 78, 92] exc有语音数量:[63, 80, 96, 114, 48, 103, 154, 84, 82, 217] hap有语音数量:[69, 66, 70, 47, 80, 55, 31, 34, 77, 66] neu有语

    2024年02月08日
    浏览(32)
  • Yolov5中使用Resnet18作为主干网络

    采用Resnet-18作为主干网络,首先第一件事情就要了解Resnet的网络结构 以及resnet-18中的残差层是做什么的 引入残差层是为了解决伴随着层数的递增,而出现的梯度消失的问题,从而引入了残差层即 在sigmoid中其激活函数 S ( x ) = 1 1 + e − x S ‘ ( x ) = S ( x ) ( 1 − S ( x ) ) S(x)=fra

    2023年04月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包