带有InceptionA模块的

1.导入头文件

import pickle
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential,Model
from keras.layers import Dropout, Dense, Conv2D, Flatten, MaxPooling2D, Input, Activation, BatchNormalization
from keras.layers.merge import concatenate
from keras.callbacks import ModelCheckpoint
from keras import utils  # 归一化变量
from sklearn.model_selection import train_test_split

2.构建卷积块和InceptionA

def Conv2d_BN(x, filters,kernel_size, padding='same',strides=(1,1)):
    x = Conv2D(filters,kernel_size,padding=padding,strides=strides)(x)
    x = BatchNormalization(axis=3)(x)
    x = Activation('relu')(x)
    return x

def InceptionA(x,filters):
    branch1x1 = Conv2d_BN(x,filters,(1,1))
 
    branch3x3 = Conv2d_BN(x,filters,(1,1))
    branch3x3 = Conv2d_BN(branch3x3,filters,(3,3))
 
    branch5x5 = Conv2d_BN(x,filters,(5,5))
    branch5x5 = Conv2d_BN(branch5x5,filters,(5,5))
 
    branchpool = MaxPooling2D(pool_size=(3,3),strides=(1,1),padding='same')(x)
    branchpool = Conv2d_BN(branchpool,filters,(1,1))
 
    out = [branch1x1,branch3x3,branch5x5,branchpool]
    out = concatenate(out,axis=-1)
    return out

3.

GoogLeNet简化版本的,只写了卷积、卷积、Inception、
少了很多层

inpt = Input(shape=(60, 60, 8))

x = Conv2D(filters=64, kernel_size=(7, 7), strides=(2, 2), padding='same', activation='relu',kernel_initializer='uniform')(inpt)
x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2))(x)

x = Conv2D(filters=192, kernel_size=(3, 3), strides=(1, 1), padding='same', activation='relu',kernel_initializer='uniform')(x)
x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2))(x)

x = InceptionA(x,64)
x = InceptionA(x,64)

x = Flatten()(x)
x = Dense(1024, activation='relu')(x)
x = Dropout(0.5)(x)
x = Dense(14, activation='softmax')(x)

参考

猜你喜欢

转载自blog.csdn.net/weixin_47289438/article/details/112171850