keras的resnet50模型介绍

本文详细介绍了Keras中ResNet50网络的结构,包括ZeroPadding2D、Conv2D、BatchNormalization、MaxPooling2D等关键层的作用,以及block的构建方式,揭示了ResNet50并非只有50层,而是包含187层的深层网络。
摘要由CSDN通过智能技术生成

网络的完整结构,可通过下面代码显示在控制台上

import keras_resnet.models
import keras
shape, classes = (224, 224, 3), 1000
x = keras.layers.Input(shape)
model = keras_resnet.models.ResNet50(x)
model.summary()

网络源码实现:

下面节选自python3.6/site-packages/keras_resnet/models/_2d.py

刚开始,第一层,含有补边,卷积,BN,激活函数五个部分

备注:网络中,一般把含有可训练参数的模块称为一层,比如卷积层称为一层,而激活函数等不含可训练参数的模块一般不称为一层。

1. keras.layers.ZeroPadding2D(padding=3, name="padding_conv1")(inputs)

功能:对输入inputs的4个边进行补0,比如若输入图像尺寸为(224,224,3),则每个边多补充3行(列)0,

则宽就变成了224+3+3=230, 即经过这一层后,图片尺寸转变为(230,230,3)

2. keras.layers.Conv2D(64, (7, 7), strides=(2, 2), use_bias=False, name="conv1")(x)

功能:卷积层,卷积核(7,7,64), strid=2, 若输入图片x的尺寸为(230,230,3),则经过这个卷积层后的尺寸为:

根据计算公式\frac{W-F+1}{S},可得,新的宽为

(230-7+1)/2=112, 因此输入(230,230,3)的图片经过这个卷积层后,输出尺寸为(112,112,64)

3.keras_resnet.layers.BatchNormalization(axis=axis, epsilon=1e-5, freeze=freeze_bn, name="bn_conv1")(x)

BN层,对输入进行归一化,不改变输入的尺寸,输出尺寸为(112,112,64)

4.keras.layers.Activation("relu", name="conv1_relu")(x)

激活函数层,用的relu激活函数,不改变输入的尺寸,输出尺寸为(112,112,64)

5.keras.layers.MaxPooling2D((3, 3), strides=(2, 2), padding="same", name="pool1")(x)

池化层, 输出的计算公式同上述卷积层,若输入维度(112,112,64),则输出尺寸为(56,56,64)

(112-3+1)/2=????这里结论是56,怎么算出来的,不知道哦

6. 后面是block的构造

另外,对于resnet来讲,还有一个重要的bottleneck_2d模块,位于python3.6/site_packages/keras_resnet/blocks/_2d.py中

de
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值