def cnn_model():
'''
Construct the CNN model,
2*(Conv1D + relu + MaxPooling1D) + Flatten + 2*(Dense + relu) + Dense + softmax
Tissue inputs will be inserted after the first Dense/relu layer, if activate
'''
print('Contruct CNN model')
main_inputs = Input(shape=X_DATA[0].shape, name='sequence_inputs')
hidden = Conv1D(128, kernel_size=2, padding='same', activation='relu')(main_inputs)
hidden = MaxPooling1D(pool_size=10)(hidden)
hidden = Conv1D(128, kernel_size=2, padding='same', activation='relu')(hidden)
hidden = MaxPooling1D(pool_size=10)(hidden)
if ARGS.d:
hidden = Dropout(ARGS.d/100)(hidden)
hidden = Flatten()(hidden)
hidden = Dense(625)(hidden)
hidden = Activation('relu')(hidden)
if ARGS.T:
auxiliary_inputs = Input(shape=TISSUE_DATA[0].shape, name='tissue_inputs')
hidden = keras.layers.concatenate([hidden, auxiliary_inputs])
hidden = Dense(125)(hidden)
hidden = Activation('relu')(hidden)
outputs = Dense(CLASSES, activation='softmax')(hidden)
if ARGS.T:
model = Model(inputs=[main_inputs, auxiliary_inputs], outputs=outputs)
else:
model = Model(inputs=main_inputs, outputs=outputs)
model.summary()
model.compile(
loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adam(),
metrics=['accuracy'])
model.save_weights('{}model.h5~'.format(ARGS.o))
return model
评论列表
文章目录