resnet网络解决了在普通网络中,深度加深导致的梯度消失和梯度爆炸的问题。在resnet中,使用了残差学习的方法,使网络层数极大加深;与普通全连接网络的对比中,出现了跨层连接即short-cut。
改变了网络要学习的目标,由普通全连接网络的H(x)改变为了F(x)=H(x)-x,即残差。
① identity 块
② The convolutional 块
两者区别在于是否在shortcut上添加卷积操作
resnet结构图如下
参考上述操作描述及过程图可以很简单的编写代码:
** identity 块**
def identity_block(X,f,filters,stage,block):
conv_name_base = 'res' + str(stage) + block + '_branch'
bn_name_base = 'bn' + str(stage) + block + '_branch'
# 我认为相当于tensorflow里的一个占位符,之后主体model里输入filters
F1,F2,F3 = filters
X_shortcut = X
# First
X = Conv2D(filters=F1,kernel_size=(1,1),strides=(1,1),padding='valid',
name=conv_name_base+'2a',kernel_initializer=glorot_uniform(seed=0))(X)
X = BatchNormalization(axis=3,name=bn_name_base+'2a')(X)
X = Activation('relu')(X)
# 这里的f也相当于一个占位符,之后输入值
# Second
X = Conv2D(filters=F2,kernel_size=(f,f),strides=(1,1),padding='same',
name=conv_name_base+'2b',kernel_initializer=glorot_uniform(seed=0))(X)
X = BatchNormalization(axis=3,name=bn_name_base+'2b')(X)
X = Activation('relu')(X)
# Final
X = Conv2D(filters=F3,kernel_size=(1,1),strides=(1,1),padding='valid',
name=conv_name_base+'2c',kernel_initializer=glorot_uniform(seed=0))(X)
X = BatchNormalization(axis=3,name=bn_name_base+'2c')(X)
X = Add()([X,X_shortcut])
X = Activation('relu')(X)
return X
The convolutional 块
def convolutional_block(X,f,filters,stage,block,s=2):
conv_name_base = 'res' + str(stage) + block +'_branch'
bn_name_base = 'bn' + str(stage) + block +'_branch'
F1,F2,F3 = filters
X_shortcut = X
# First
X = Conv2D(F1,(1,1),strides=(s,s),name=conv_name_base+'2a',padding='valid',
kernel_initializer=glorot_uniform(seed=0))(X)
X = BatchNormalization(axis=3,name=bn_name_base+'2a')(X)
X = Activation('relu')(X)
# Second
X = Conv2D(F2,(f,f),strides=(1,1),name=conv_name_base+'2b',padding='same',
kernel_initializer=glorot_uniform(seed=0))(X)
X = BatchNormalization(axis=3,name=bn_name_base+'2b')(X)
X = Activation('relu')(X)
# Third
X = Conv2D(F3,(1,1),strides=(1,1),name=conv_name_base+'2c',padding='valid',
kernel_initializer=glorot_uniform(seed=0))(X)
X = BatchNormalization(axis=3,name=bn_name_base+'2c')(X)
# X_shortcut path
X_shortcut = Conv2D(F3,(1,1),strides=(s,s),name=conv_name_base+'1',padding='valid',
kernel_initializer=glorot_uniform(seed=0))(X_shortcut)
X_shortcut = BatchNormalization(axis=3,name=bn_name_base+'1')(X_shortcut)
# ADD
X = Add()([X,X_shortcut])
X = Activation('relu')(X)
return X
resnet
def ResNet50(input_shape=(64,64,3),classes=6):
# 定义输入层的输入形状
X_input = Input(input_shape)
# padding-zero
X = ZeroPadding2D((3,3))(X_input)
# stage 1
X = Conv2D(filters=64,kernel_size=(7,7),strides=(2,2),name='conv',
kernel_initializer=glorot_uniform(seed=0))(X)
X = BatchNormalization(axis=3,name='bn_conv1')(X)
X = Activation('relu')(X)
X = MaxPool2D(pool_size=(3,3),strides=(2,2))(X)
# stage 2
X = convolutional_block(X,f=3,filters=[64,64,256],stage=2,block='a',s=1)
X = identity_block(X,f=3,filters=[64,64,256],stage=2,block='b')
X = identity_block(X,f=3,filters=[64,64,256],stage=2,block='c')
# stage 3
X = convolutional_block(X,f=3,filters=[128,128,512],stage=3,block='a',s=1)
X = identity_block(X,f=3,filters=[128,128,512],stage=3,block='b')
X = identity_block(X,f=3,filters=[128,128,512],stage=3,block='c')
X = identity_block(X,f=3,filters=[128,128,512],stage=3,block='d')
# stage 4
X = convolutional_block(X,f=3,filters=[256,256,1024],stage=4,block='a',s=2)
X = identity_block(X,f=3,filters=[256,256,1024],stage=4,block='b')
X = identity_block(X,f=3,filters=[256,256,1024],stage=4,block='c')
X = identity_block(X,f=3,filters=[256,256,1024],stage=4,block='d')
X = identity_block(X,f=3,filters=[256,256,1024],stage=4,block='e')
X = identity_block(X,f=3,filters=[256,256,1024],stage=4,block='f')
# stage 5
X = convolutional_block(X,f=3,filters=[512,512,2048],stage=5,block='a',s=2)
X = identity_block(X,f=3,filters=[512,512,2048],stage=5,block='b')
X = identity_block(X,f=3,filters=[512,512,2048],stage=5,block='c')
X = AveragePooling2D(pool_size=(2,2),padding='same')(X)
X = Flatten()(X)
X = Dense(classes,activation='softmax',name='fc'+str(classes),
kernel_initializer=glorot_uniform(seed=0))(X)
model = Model(inputs=X_input,outputs=X,name='ResNet50')
return model
# 打印模型结构
model.summary()
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_3 (InputLayer) (None, 64, 64, 3) 0
__________________________________________________________________________________________________
zero_padding2d_3 (ZeroPadding2D (None, 70, 70, 3) 0 input_3[0][0]
__________________________________________________________________________________________________
conv (Conv2D) (None, 32, 32, 64) 9472 zero_padding2d_3[0][0]
__________________________________________________________________________________________________
bn_conv1 (BatchNormalization) (None, 32, 32, 64) 256 conv[0][0]
__________________________________________________________________________________________________
activation_96 (Activation) (None, 32, 32, 64) 0 bn_conv1[0][0]
__________________________________________________________________________________________________
max_pooling2d_3 (MaxPooling2D) (None, 15, 15, 64) 0 activation_96[0][0]
__________________________________________________________________________________________________
res2a_branch2a (Conv2D) (None, 15, 15, 64) 4160 max_pooling2d_3[0][0]
__________________________________________________________________________________________________
bn2a_branch2a (BatchNormalizati (None, 15, 15, 64) 256 res2a_branch2a[0][0]
__________________________________________________________________________________________________
activation_97 (Activation) (None, 15, 15, 64) 0 bn2a_branch2a[0][0]
__________________________________________________________________________________________________
res2a_branch2b (Conv2D) (None, 15, 15, 64) 36928 activation_97[0][0]
__________________________________________________________________________________________________
bn2a_branch2b (BatchNormalizati (None, 15, 15, 64) 256 res2a_branch2b[0][0]
__________________________________________________________________________________________________
activation_98 (Activation) (None, 15, 15, 64) 0 bn2a_branch2b[0][0]
__________________________________________________________________________________________________
res2a_branch2c (Conv2D) (None, 15, 15, 256) 16640 activation_98[0][0]
__________________________________________________________________________________________________
res2a_branch1 (Conv2D) (None, 15, 15, 256) 16640 max_pooling2d_3[0][0]
__________________________________________________________________________________________________
bn2a_branch2c (BatchNormalizati (None, 15, 15, 256) 1024 res2a_branch2c[0][0]
__________________________________________________________________________________________________
bn2a_branch1 (BatchNormalizatio (None, 15, 15, 256) 1024 res2a_branch1[0][0]
__________________________________________________________________________________________________
add_32 (Add) (None, 15, 15, 256) 0 bn2a_branch2c[0][0]
bn2a_branch1[0][0]
__________________________________________________________________________________________________
activation_99 (Activation) (None, 15, 15, 256) 0 add_32[0][0]
__________________________________________________________________________________________________
res2b_branch2a (Conv2D) (None, 15, 15, 64) 16448 activation_99[0][0]
__________________________________________________________________________________________________
bn2b_branch2a (BatchNormalizati (None, 15, 15, 64) 256 res2b_branch2a[0][0]
__________________________________________________________________________________________________
activation_100 (Activation) (None, 15, 15, 64) 0 bn2b_branch2a[0][0]
__________________________________________________________________________________________________
res2b_branch2b (Conv2D) (None, 15, 15, 64) 36928 activation_100[0][0]
__________________________________________________________________________________________________
bn2b_branch2b (BatchNormalizati (None, 15, 15, 64) 256 res2b_branch2b[0][0]
__________________________________________________________________________________________________
activation_101 (Activation) (None, 15, 15, 64) 0 bn2b_branch2b[0][0]
__________________________________________________________________________________________________
res2b_branch2c (Conv2D) (None, 15, 15, 256) 16640 activation_101[0][0]
__________________________________________________________________________________________________
bn2b_branch2c (BatchNormalizati (None, 15, 15, 256) 1024 res2b_branch2c[0][0]
__________________________________________________________________________________________________
add_33 (Add) (None, 15, 15, 256) 0 bn2b_branch2c[0][0]
activation_99[0][0]
__________________________________________________________________________________________________
activation_102 (Activation) (None, 15, 15, 256) 0 add_33[0][0]
__________________________________________________________________________________________________
res2c_branch2a (Conv2D) (None, 15, 15, 64) 16448 activation_102[0][0]
__________________________________________________________________________________________________
bn2c_branch2a (BatchNormalizati (None, 15, 15, 64) 256 res2c_branch2a[0][0]
__________________________________________________________________________________________________
activation_103 (Activation) (None, 15, 15, 64) 0 bn2c_branch2a[0][0]
__________________________________________________________________________________________________
res2c_branch2b (Conv2D) (None, 15, 15, 64) 36928 activation_103[0][0]
__________________________________________________________________________________________________
bn2c_branch2b (BatchNormalizati (None, 15, 15, 64) 256 res2c_branch2b[0][0]
__________________________________________________________________________________________________
activation_104 (Activation) (None, 15, 15, 64) 0 bn2c_branch2b[0][0]
__________________________________________________________________________________________________
res2c_branch2c (Conv2D) (None, 15, 15, 256) 16640 activation_104[0][0]
__________________________________________________________________________________________________
bn2c_branch2c (BatchNormalizati (None, 15, 15, 256) 1024 res2c_branch2c[0][0]
__________________________________________________________________________________________________
add_34 (Add) (None, 15, 15, 256) 0 bn2c_branch2c[0][0]
activation_102[0][0]
__________________________________________________________________________________________________
activation_105 (Activation) (None, 15, 15, 256) 0 add_34[0][0]
__________________________________________________________________________________________________
res3a_branch2a (Conv2D) (None, 15, 15, 128) 32896 activation_105[0][0]
__________________________________________________________________________________________________
bn3a_branch2a (BatchNormalizati (None, 15, 15, 128) 512 res3a_branch2a[0][0]
__________________________________________________________________________________________________
activation_106 (Activation) (None, 15, 15, 128) 0 bn3a_branch2a[0][0]
__________________________________________________________________________________________________
res3a_branch2b (Conv2D) (None, 15, 15, 128) 147584 activation_106[0][0]
__________________________________________________________________________________________________
bn3a_branch2b (BatchNormalizati (None, 15, 15, 128) 512 res3a_branch2b[0][0]
__________________________________________________________________________________________________
activation_107 (Activation) (None, 15, 15, 128) 0 bn3a_branch2b[0][0]
__________________________________________________________________________________________________
res3a_branch2c (Conv2D) (None, 15, 15, 512) 66048 activation_107[0][0]
__________________________________________________________________________________________________
res3a_branch1 (Conv2D) (None, 15, 15, 512) 131584 activation_105[0][0]
__________________________________________________________________________________________________
bn3a_branch2c (BatchNormalizati (None, 15, 15, 512) 2048 res3a_branch2c[0][0]
__________________________________________________________________________________________________
bn3a_branch1 (BatchNormalizatio (None, 15, 15, 512) 2048 res3a_branch1[0][0]
__________________________________________________________________________________________________
add_35 (Add) (None, 15, 15, 512) 0 bn3a_branch2c[0][0]
bn3a_branch1[0][0]
__________________________________________________________________________________________________
activation_108 (Activation) (None, 15, 15, 512) 0 add_35[0][0]
__________________________________________________________________________________________________
res3b_branch2a (Conv2D) (None, 15, 15, 128) 65664 activation_108[0][0]
__________________________________________________________________________________________________
bn3b_branch2a (BatchNormalizati (None, 15, 15, 128) 512 res3b_branch2a[0][0]
__________________________________________________________________________________________________
activation_109 (Activation) (None, 15, 15, 128) 0 bn3b_branch2a[0][0]
__________________________________________________________________________________________________
res3b_branch2b (Conv2D) (None, 15, 15, 128) 147584 activation_109[0][0]
__________________________________________________________________________________________________
bn3b_branch2b (BatchNormalizati (None, 15, 15, 128) 512 res3b_branch2b[0][0]
__________________________________________________________________________________________________
activation_110 (Activation) (None, 15, 15, 128) 0 bn3b_branch2b[0][0]
__________________________________________________________________________________________________
res3b_branch2c (Conv2D) (None, 15, 15, 512) 66048 activation_110[0][0]
__________________________________________________________________________________________________
bn3b_branch2c (BatchNormalizati (None, 15, 15, 512) 2048 res3b_branch2c[0][0]
__________________________________________________________________________________________________
add_36 (Add) (None, 15, 15, 512) 0 bn3b_branch2c[0][0]
activation_108[0][0]
__________________________________________________________________________________________________
activation_111 (Activation) (None, 15, 15, 512) 0 add_36[0][0]
__________________________________________________________________________________________________
res3c_branch2a (Conv2D) (None, 15, 15, 128) 65664 activation_111[0][0]
__________________________________________________________________________________________________
bn3c_branch2a (BatchNormalizati (None, 15, 15, 128) 512 res3c_branch2a[0][0]
__________________________________________________________________________________________________
activation_112 (Activation) (None, 15, 15, 128) 0 bn3c_branch2a[0][0]
__________________________________________________________________________________________________
res3c_branch2b (Conv2D) (None, 15, 15, 128) 147584 activation_112[0][0]
__________________________________________________________________________________________________
bn3c_branch2b (BatchNormalizati (None, 15, 15, 128) 512 res3c_branch2b[0][0]
__________________________________________________________________________________________________
activation_113 (Activation) (None, 15, 15, 128) 0 bn3c_branch2b[0][0]
__________________________________________________________________________________________________
res3c_branch2c (Conv2D) (None, 15, 15, 512) 66048 activation_113[0][0]
__________________________________________________________________________________________________
bn3c_branch2c (BatchNormalizati (None, 15, 15, 512) 2048 res3c_branch2c[0][0]
__________________________________________________________________________________________________
add_37 (Add) (None, 15, 15, 512) 0 bn3c_branch2c[0][0]
activation_111[0][0]
__________________________________________________________________________________________________
activation_114 (Activation) (None, 15, 15, 512) 0 add_37[0][0]
__________________________________________________________________________________________________
res3d_branch2a (Conv2D) (None, 15, 15, 128) 65664 activation_114[0][0]
__________________________________________________________________________________________________
bn3d_branch2a (BatchNormalizati (None, 15, 15, 128) 512 res3d_branch2a[0][0]
__________________________________________________________________________________________________
activation_115 (Activation) (None, 15, 15, 128) 0 bn3d_branch2a[0][0]
__________________________________________________________________________________________________
res3d_branch2b (Conv2D) (None, 15, 15, 128) 147584 activation_115[0][0]
__________________________________________________________________________________________________
bn3d_branch2b (BatchNormalizati (None, 15, 15, 128) 512 res3d_branch2b[0][0]
__________________________________________________________________________________________________
activation_116 (Activation) (None, 15, 15, 128) 0 bn3d_branch2b[0][0]
__________________________________________________________________________________________________
res3d_branch2c (Conv2D) (None, 15, 15, 512) 66048 activation_116[0][0]
__________________________________________________________________________________________________
bn3d_branch2c (BatchNormalizati (None, 15, 15, 512) 2048 res3d_branch2c[0][0]
__________________________________________________________________________________________________
add_38 (Add) (None, 15, 15, 512) 0 bn3d_branch2c[0][0]
activation_114[0][0]
__________________________________________________________________________________________________
activation_117 (Activation) (None, 15, 15, 512) 0 add_38[0][0]
__________________________________________________________________________________________________
res4a_branch2a (Conv2D) (None, 8, 8, 256) 131328 activation_117[0][0]
__________________________________________________________________________________________________
bn4a_branch2a (BatchNormalizati (None, 8, 8, 256) 1024 res4a_branch2a[0][0]
__________________________________________________________________________________________________
activation_118 (Activation) (None, 8, 8, 256) 0 bn4a_branch2a[0][0]
__________________________________________________________________________________________________
res4a_branch2b (Conv2D) (None, 8, 8, 256) 590080 activation_118[0][0]
__________________________________________________________________________________________________
bn4a_branch2b (BatchNormalizati (None, 8, 8, 256) 1024 res4a_branch2b[0][0]
__________________________________________________________________________________________________
activation_119 (Activation) (None, 8, 8, 256) 0 bn4a_branch2b[0][0]
__________________________________________________________________________________________________
res4a_branch2c (Conv2D) (None, 8, 8, 1024) 263168 activation_119[0][0]
__________________________________________________________________________________________________
res4a_branch1 (Conv2D) (None, 8, 8, 1024) 525312 activation_117[0][0]
__________________________________________________________________________________________________
bn4a_branch2c (BatchNormalizati (None, 8, 8, 1024) 4096 res4a_branch2c[0][0]
__________________________________________________________________________________________________
bn4a_branch1 (BatchNormalizatio (None, 8, 8, 1024) 4096 res4a_branch1[0][0]
__________________________________________________________________________________________________
add_39 (Add) (None, 8, 8, 1024) 0 bn4a_branch2c[0][0]
bn4a_branch1[0][0]
__________________________________________________________________________________________________
activation_120 (Activation) (None, 8, 8, 1024) 0 add_39[0][0]
__________________________________________________________________________________________________
res4b_branch2a (Conv2D) (None, 8, 8, 256) 262400 activation_120[0][0]
__________________________________________________________________________________________________
bn4b_branch2a (BatchNormalizati (None, 8, 8, 256) 1024 res4b_branch2a[0][0]
__________________________________________________________________________________________________
activation_121 (Activation) (None, 8, 8, 256) 0 bn4b_branch2a[0][0]
__________________________________________________________________________________________________
res4b_branch2b (Conv2D) (None, 8, 8, 256) 590080 activation_121[0][0]
__________________________________________________________________________________________________
bn4b_branch2b (BatchNormalizati (None, 8, 8, 256) 1024 res4b_branch2b[0][0]
__________________________________________________________________________________________________
activation_122 (Activation) (None, 8, 8, 256) 0 bn4b_branch2b[0][0]
__________________________________________________________________________________________________
res4b_branch2c (Conv2D) (None, 8, 8, 1024) 263168 activation_122[0][0]
__________________________________________________________________________________________________
bn4b_branch2c (BatchNormalizati (None, 8, 8, 1024) 4096 res4b_branch2c[0][0]
__________________________________________________________________________________________________
add_40 (Add) (None, 8, 8, 1024) 0 bn4b_branch2c[0][0]
activation_120[0][0]
__________________________________________________________________________________________________
activation_123 (Activation) (None, 8, 8, 1024) 0 add_40[0][0]
__________________________________________________________________________________________________
res4c_branch2a (Conv2D) (None, 8, 8, 256) 262400 activation_123[0][0]
__________________________________________________________________________________________________
bn4c_branch2a (BatchNormalizati (None, 8, 8, 256) 1024 res4c_branch2a[0][0]
__________________________________________________________________________________________________
activation_124 (Activation) (None, 8, 8, 256) 0 bn4c_branch2a[0][0]
__________________________________________________________________________________________________
res4c_branch2b (Conv2D) (None, 8, 8, 256) 590080 activation_124[0][0]
__________________________________________________________________________________________________
bn4c_branch2b (BatchNormalizati (None, 8, 8, 256) 1024 res4c_branch2b[0][0]
__________________________________________________________________________________________________
activation_125 (Activation) (None, 8, 8, 256) 0 bn4c_branch2b[0][0]
__________________________________________________________________________________________________
res4c_branch2c (Conv2D) (None, 8, 8, 1024) 263168 activation_125[0][0]
__________________________________________________________________________________________________
bn4c_branch2c (BatchNormalizati (None, 8, 8, 1024) 4096 res4c_branch2c[0][0]
__________________________________________________________________________________________________
add_41 (Add) (None, 8, 8, 1024) 0 bn4c_branch2c[0][0]
activation_123[0][0]
__________________________________________________________________________________________________
activation_126 (Activation) (None, 8, 8, 1024) 0 add_41[0][0]
__________________________________________________________________________________________________
res4d_branch2a (Conv2D) (None, 8, 8, 256) 262400 activation_126[0][0]
__________________________________________________________________________________________________
bn4d_branch2a (BatchNormalizati (None, 8, 8, 256) 1024 res4d_branch2a[0][0]
__________________________________________________________________________________________________
activation_127 (Activation) (None, 8, 8, 256) 0 bn4d_branch2a[0][0]
__________________________________________________________________________________________________
res4d_branch2b (Conv2D) (None, 8, 8, 256) 590080 activation_127[0][0]
__________________________________________________________________________________________________
bn4d_branch2b (BatchNormalizati (None, 8, 8, 256) 1024 res4d_branch2b[0][0]
__________________________________________________________________________________________________
activation_128 (Activation) (None, 8, 8, 256) 0 bn4d_branch2b[0][0]
__________________________________________________________________________________________________
res4d_branch2c (Conv2D) (None, 8, 8, 1024) 263168 activation_128[0][0]
__________________________________________________________________________________________________
bn4d_branch2c (BatchNormalizati (None, 8, 8, 1024) 4096 res4d_branch2c[0][0]
__________________________________________________________________________________________________
add_42 (Add) (None, 8, 8, 1024) 0 bn4d_branch2c[0][0]
activation_126[0][0]
__________________________________________________________________________________________________
activation_129 (Activation) (None, 8, 8, 1024) 0 add_42[0][0]
__________________________________________________________________________________________________
res4e_branch2a (Conv2D) (None, 8, 8, 256) 262400 activation_129[0][0]
__________________________________________________________________________________________________
bn4e_branch2a (BatchNormalizati (None, 8, 8, 256) 1024 res4e_branch2a[0][0]
__________________________________________________________________________________________________
activation_130 (Activation) (None, 8, 8, 256) 0 bn4e_branch2a[0][0]
__________________________________________________________________________________________________
res4e_branch2b (Conv2D) (None, 8, 8, 256) 590080 activation_130[0][0]
__________________________________________________________________________________________________
bn4e_branch2b (BatchNormalizati (None, 8, 8, 256) 1024 res4e_branch2b[0][0]
__________________________________________________________________________________________________
activation_131 (Activation) (None, 8, 8, 256) 0 bn4e_branch2b[0][0]
__________________________________________________________________________________________________
res4e_branch2c (Conv2D) (None, 8, 8, 1024) 263168 activation_131[0][0]
__________________________________________________________________________________________________
bn4e_branch2c (BatchNormalizati (None, 8, 8, 1024) 4096 res4e_branch2c[0][0]
__________________________________________________________________________________________________
add_43 (Add) (None, 8, 8, 1024) 0 bn4e_branch2c[0][0]
activation_129[0][0]
__________________________________________________________________________________________________
activation_132 (Activation) (None, 8, 8, 1024) 0 add_43[0][0]
__________________________________________________________________________________________________
res5a_branch2a (Conv2D) (None, 4, 4, 512) 524800 activation_132[0][0]
__________________________________________________________________________________________________
bn5a_branch2a (BatchNormalizati (None, 4, 4, 512) 2048 res5a_branch2a[0][0]
__________________________________________________________________________________________________
activation_133 (Activation) (None, 4, 4, 512) 0 bn5a_branch2a[0][0]
__________________________________________________________________________________________________
res5a_branch2b (Conv2D) (None, 4, 4, 512) 2359808 activation_133[0][0]
__________________________________________________________________________________________________
bn5a_branch2b (BatchNormalizati (None, 4, 4, 512) 2048 res5a_branch2b[0][0]
__________________________________________________________________________________________________
activation_134 (Activation) (None, 4, 4, 512) 0 bn5a_branch2b[0][0]
__________________________________________________________________________________________________
res5a_branch2c (Conv2D) (None, 4, 4, 2048) 1050624 activation_134[0][0]
__________________________________________________________________________________________________
res5a_branch1 (Conv2D) (None, 4, 4, 2048) 2099200 activation_132[0][0]
__________________________________________________________________________________________________
bn5a_branch2c (BatchNormalizati (None, 4, 4, 2048) 8192 res5a_branch2c[0][0]
__________________________________________________________________________________________________
bn5a_branch1 (BatchNormalizatio (None, 4, 4, 2048) 8192 res5a_branch1[0][0]
__________________________________________________________________________________________________
add_44 (Add) (None, 4, 4, 2048) 0 bn5a_branch2c[0][0]
bn5a_branch1[0][0]
__________________________________________________________________________________________________
activation_135 (Activation) (None, 4, 4, 2048) 0 add_44[0][0]
__________________________________________________________________________________________________
res5b_branch2a (Conv2D) (None, 4, 4, 512) 1049088 activation_135[0][0]
__________________________________________________________________________________________________
bn5b_branch2a (BatchNormalizati (None, 4, 4, 512) 2048 res5b_branch2a[0][0]
__________________________________________________________________________________________________
activation_136 (Activation) (None, 4, 4, 512) 0 bn5b_branch2a[0][0]
__________________________________________________________________________________________________
res5b_branch2b (Conv2D) (None, 4, 4, 512) 2359808 activation_136[0][0]
__________________________________________________________________________________________________
bn5b_branch2b (BatchNormalizati (None, 4, 4, 512) 2048 res5b_branch2b[0][0]
__________________________________________________________________________________________________
activation_137 (Activation) (None, 4, 4, 512) 0 bn5b_branch2b[0][0]
__________________________________________________________________________________________________
res5b_branch2c (Conv2D) (None, 4, 4, 2048) 1050624 activation_137[0][0]
__________________________________________________________________________________________________
bn5b_branch2c (BatchNormalizati (None, 4, 4, 2048) 8192 res5b_branch2c[0][0]
__________________________________________________________________________________________________
add_45 (Add) (None, 4, 4, 2048) 0 bn5b_branch2c[0][0]
activation_135[0][0]
__________________________________________________________________________________________________
activation_138 (Activation) (None, 4, 4, 2048) 0 add_45[0][0]
__________________________________________________________________________________________________
res5c_branch2a (Conv2D) (None, 4, 4, 512) 1049088 activation_138[0][0]
__________________________________________________________________________________________________
bn5c_branch2a (BatchNormalizati (None, 4, 4, 512) 2048 res5c_branch2a[0][0]
__________________________________________________________________________________________________
activation_139 (Activation) (None, 4, 4, 512) 0 bn5c_branch2a[0][0]
__________________________________________________________________________________________________
res5c_branch2b (Conv2D) (None, 4, 4, 512) 2359808 activation_139[0][0]
__________________________________________________________________________________________________
bn5c_branch2b (BatchNormalizati (None, 4, 4, 512) 2048 res5c_branch2b[0][0]
__________________________________________________________________________________________________
activation_140 (Activation) (None, 4, 4, 512) 0 bn5c_branch2b[0][0]
__________________________________________________________________________________________________
res5c_branch2c (Conv2D) (None, 4, 4, 2048) 1050624 activation_140[0][0]
__________________________________________________________________________________________________
bn5c_branch2c (BatchNormalizati (None, 4, 4, 2048) 8192 res5c_branch2c[0][0]
__________________________________________________________________________________________________
add_46 (Add) (None, 4, 4, 2048) 0 bn5c_branch2c[0][0]
activation_138[0][0]
__________________________________________________________________________________________________
activation_141 (Activation) (None, 4, 4, 2048) 0 add_46[0][0]
__________________________________________________________________________________________________
average_pooling2d_3 (AveragePoo (None, 2, 2, 2048) 0 activation_141[0][0]
__________________________________________________________________________________________________
flatten_3 (Flatten) (None, 8192) 0 average_pooling2d_3[0][0]
__________________________________________________________________________________________________
fc6 (Dense) (None, 6) 49158 flatten_3[0][0]
==================================================================================================
Total params: 22,515,078
Trainable params: 22,465,030
Non-trainable params: 50,048
__________________________________________________________________________________________________
之前相应模块库导入就不放了,无非就是keras.layers,keras.models这些,参照之前的网络结构图及上面的描述,导入相应的即可。
keras的模型可视化环境配置还有点问题,现在还没搞好,之后贴。。