文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-03 20:40

关注

ResNet18原理

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

ResNet18的基本结构如下:

 

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

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

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

ResNet18源码(tensorflow版)

import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layers,datasets,modelsdef 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])    passdef ConvCall(x,filtten,xx,yy,strides = (1,1)):    x = layers.Conv2D(filtten,(xx,yy),strides=strides,padding='same')(x)    x = layers.BatchNormalization()(x)    return xdef 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 xdef 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 outputif __name__ == '__main__':    main()

训练10个epoch的效果

 

 

来源地址:https://blog.csdn.net/Code_and516/article/details/129816871

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯