tensorflow.keras实现Inception V3模型

参考简书链接: 深度神经网络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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值