Keras中CNN联合LSTM进行分类

匿名 (未验证) 提交于 2019-12-03 00:37:01
def get_model():     n_classes = 6     inp=Input(shape=(40, 80))     reshape=Reshape((1,40,80))(inp)  #   pre=ZeroPadding2D(padding=(1, 1))(reshape)     # 1     conv1=Convolution2D(32, 3, 3, border_mode='same',init='glorot_uniform')(reshape)     #model.add(Activation('relu'))     l1=LeakyReLU(alpha=0.33)(conv1)      conv2=ZeroPadding2D(padding=(1, 1))(l1)     conv2=Convolution2D(32, 3, 3, border_mode='same',init='glorot_uniform')(conv2)     #model.add(Activation('relu'))     l2=LeakyReLU(alpha=0.33)(conv2)      m2=MaxPooling2D((3, 3), strides=(3, 3))(l2)     d2=Dropout(0.25)(m2)     # 2     conv3=ZeroPadding2D(padding=(1, 1))(d2)     conv3=Convolution2D(64, 3, 3, border_mode='same',init='glorot_uniform')(conv3)     #model.add(Activation('relu'))     l3=LeakyReLU(alpha=0.33)(conv3)      conv4=ZeroPadding2D(padding=(1, 1))(l3)     conv4=Convolution2D(64, 3, 3, border_mode='same',init='glorot_uniform')(conv4)     #model.add(Activation('relu'))     l4=LeakyReLU(alpha=0.33)(conv4)      m4=MaxPooling2D((3, 3), strides=(3, 3))(l4)     d4=Dropout(0.25)(m4)     # 3     conv5=ZeroPadding2D(padding=(1, 1))(d4)     conv5=Convolution2D(128, 3, 3, border_mode='same',init='glorot_uniform')(conv5)     #model.add(Activation('relu'))     l5=LeakyReLU(alpha=0.33)(conv5)      conv6=ZeroPadding2D(padding=(1, 1))(l5)     conv6=Convolution2D(128, 3, 3, border_mode='same',init='glorot_uniform')(conv6)     #model.add(Activation('relu'))     l6=LeakyReLU(alpha=0.33)(conv6)      m6=MaxPooling2D((3, 3), strides=(3, 3))(l6)     d6=Dropout(0.25)(m6)     # 4     conv7=ZeroPadding2D(padding=(1, 1))(d6)     conv7=Convolution2D(256, 3, 3, border_mode='same',init='glorot_uniform')(conv7)     #model.add(Activation('relu'))     l7=LeakyReLU(alpha=0.33)(conv7)      conv8=ZeroPadding2D(padding=(1, 1))(l7)     conv8=Convolution2D(256, 3, 3, border_mode='same',init='glorot_uniform')(conv8)     #model.add(Activation('relu'))     l8=LeakyReLU(alpha=0.33)(conv8)     g=GlobalMaxPooling2D()(l8)     print("g=",g)     #g1=Flatten()(g)     lstm1=LSTM(         input_shape=(40,80),         output_dim=256,         activation='tanh',         return_sequences=False)(inp)     dl1=Dropout(0.3)(lstm1)          den1=Dense(200,activation="relu")(dl1)     #model.add(Activation('relu'))     #l11=LeakyReLU(alpha=0.33)(d11)     dl2=Dropout(0.3)(den1)  #     lstm2=LSTM( #         256,activation='tanh', #         return_sequences=False)(lstm1) #     dl2=Dropout(0.5)(lstm2)     print("dl2=",dl1)     g2=concatenate([g,dl2],axis=1)     d10=Dense(1024)(g2)     #model.add(Activation('relu'))     l10=LeakyReLU(alpha=0.33)(d10)     l10=Dropout(0.5)(l10)     l11=Dense(n_classes, activation='softmax')(l10)        model=Model(input=inp,outputs=l11)     model.summary()     #编译model     adam = keras.optimizers.Adam(lr = 0.0005, beta_1=0.95, beta_2=0.999,epsilon=1e-08)     #adam = keras.optimizers.Adam(lr = 0.001, beta_1=0.95, beta_2=0.999,epsilon=1e-08)     #sgd = keras.optimizers.SGD(lr = 0.001, decay = 1e-06, momentum = 0.9, nesterov = False)      #reduce_lr = ReduceLROnPlateau(monitor = 'loss', factor = 0.1, patience = 2,verbose = 1, min_lr = 0.00000001, mode = 'min')     model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy'])           return model

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!