123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- from keras import Input, Model
- from keras.layers import Lambda, Dense, Conv2D, Reshape, GlobalAveragePooling2D, BatchNormalization, \
- LeakyReLU, MaxPooling2D, Dropout, Flatten
- def cnn_net_tiny(input_shape, output_shape=6270):
- _input = Input(input_shape)
- use_bias = False
- down0 = Conv2D(32, (3, 3), padding='same', use_bias=use_bias)(_input)
- down0 = BatchNormalization()(down0)
- down0 = LeakyReLU(alpha=0.1)(down0)
- down0 = Conv2D(32, (3, 3), padding='same', use_bias=use_bias)(down0)
- down0 = BatchNormalization()(down0)
- down0 = LeakyReLU(alpha=0.1)(down0)
- down0_pool = MaxPooling2D((2, 2), strides=(2, 2))(down0)
- down1 = Conv2D(32, (3, 3), padding='same', use_bias=use_bias)(down0_pool)
- down1 = BatchNormalization()(down1)
- down1 = LeakyReLU(alpha=0.1)(down1)
- down1 = Conv2D(32, (3, 3), padding='same', use_bias=use_bias)(down1)
- down1 = BatchNormalization()(down1)
- down1 = LeakyReLU(alpha=0.1)(down1)
- down1_pool = MaxPooling2D((2, 2), strides=(2, 2))(down1)
- down2 = Conv2D(64, (3, 3), padding='same', use_bias=use_bias)(down1_pool)
- down2 = BatchNormalization()(down2)
- down2 = LeakyReLU(alpha=0.1)(down2)
- down2 = Conv2D(64, (3, 3), padding='same', use_bias=use_bias)(down2)
- down2 = BatchNormalization()(down2)
- down2 = LeakyReLU(alpha=0.1)(down2)
- down2_pool = MaxPooling2D((2, 2), strides=(2, 2))(down2)
- conv = Conv2D(64, (3, 3))(down2_pool)
- bn = BatchNormalization()(conv)
- rl = LeakyReLU(alpha=0.1)(bn)
- conv = Conv2D(64, (3, 3))(rl)
- bn = BatchNormalization()(conv)
- rl = LeakyReLU(alpha=0.1)(bn)
- # conv = Conv2D(output_shape, (1, 1), activation='softmax')(rl)
- # pool = GlobalAveragePooling2D()(conv)
- # x = Reshape((output_shape,))(pool)
- rl = Flatten()(rl)
- dense = Dense(16, activation="relu")(rl)
- drop = Dropout(0.2)(dense)
- dense = Dense(output_shape, activation="softmax")(drop)
- drop = Dropout(0.2)(dense)
- x = Reshape((output_shape,))(drop)
- model = Model(_input, x)
- model.summary()
- return model
|