参考简书链接: 深度神经网络Google Inception Net-V3结构图 - 简书
模型结构如下:
代码如下:
from tensorflow.keras import Sequential,layers,Model
# 处理后的值
def my_cnn2d(input_value,my_filters,my_kernel_size,my_strides=1,my_padding='valid'):
x=layers.Conv2D(filters=my_filters,kernel_size=my_kernel_size,strides=my_strides,padding=my_padding)(input_value)
x=layers.BatchNormalization()(x)
x=layers.Activation('relu')(x)
return x
def block_1_1(input_value):
conv_1_1=my_cnn2d(input_value=input_value,my_kernel_size=1,my_filters=64,my_padding='same')
conv_2_1=my_cnn2d(input_value=input_value,my_kernel_size=1,my_filters=48,my_padding='same')
conv_2_2=my_cnn2d(input_value=conv_2_1,my_kernel_size=5,my_filters=64,my_padding='same')
conv_3_1=my_cnn2d(input_value=input_value,my_kernel_size=1,my_filters=64,my_padding='same')
conv_3_2=my_cnn2d(input_value=conv_3_1,my_kernel_size=3,my_filters=96,my_padding='same')
conv_3_3=my_cnn2d(input_value=conv_3_2,my_kernel_size=3,my_filters=96,my_padding='same')
conv_4_1=layers.AveragePooling2D(pool_size=(3,3),strides=1,padding='same')(input_value)
conv_4_2=my_cnn2d(input_value=conv_4_1,my_kernel_size=1,my_filters=32,my_padding='same')
return layers.Concatenate()([conv_1_1,conv_2_2,conv_3_3,conv_4_2])
def block_1_2(input_value):
conv_1_1=my_cnn2d(input_value=input_value,my_kernel_size=1,my_filters=64,my_padding='same')
conv_2_1=my_cnn2d(input_value=input_value,my_kernel_size=1,my_filters=48,my_padding='same')
conv_2_2=my_cnn2d(input_value=conv_2_1,my_kernel_size=5,my_filters=64,my_padding='same')
conv_3_1=my_cnn2d(input_value=input_value,my_kernel_size=1,my_filters=64,my_padding='same')
conv_3_2=my_cnn2d(input_value=conv_3_1,my_kernel_size=3,my_filters=96,my_padding='same')
conv_3_3=my_cnn2d(input_value=conv_3_2,my_kernel_size=3,my_filters=96,my_padding='same')
conv_4_1=layers.AveragePooling2D(pool_size=(3,3),strides=1,padding='same')(input_value)
conv_4_2=my_cnn2d(input_value=conv_4_1,my_kernel_size=1,my_filters=64,my_padding='same')
return layers.Concatenate()([conv_1_1,conv_2_2,conv_3_3,conv_4_2])
def block_1_3(input_value):
conv_1_1=my_cnn2d(input_value=input_value,my_kernel_size=1,my_filters=64,my_padding='same')
conv_2_1=my_cnn2d(input_value=input_value,my_kernel_size=1,my_filte