如何在cnn上添加支持向量机作为最终分类器?

2024-10-02 18:28:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我的工作是情感分析任务,我想在CNN的顶部添加支持向量机层作为最终分类器,我如何才能做到不使用hing loss?在

tweet_input = Input(shape=(seq_len,), dtype='int32')

tweet_encoder = Embedding(vocabulary_size, EMBEDDING_DIM, 
input_length=seq_len, trainable=True)(tweet_input)
bigram_branch = Conv1D(filters=64, kernel_size=2, padding='same', 
activation='relu', strides=1)(tweet_encoder)
bigram_branch = GlobalMaxPooling1D()(bigram_branch)
trigram_branch = Conv1D(filters=32, kernel_size=3, padding='same', 
activation='relu', strides=1)(tweet_encoder)
trigram_branch = GlobalMaxPooling1D()(trigram_branch)
fourgram_branch = Conv1D(filters=16, kernel_size=4, padding='same', 
activation='relu', strides=1)(tweet_encoder)
fourgram_branch = GlobalMaxPooling1D()(fourgram_branch)
merged = concatenate([bigram_branch, trigram_branch, fourgram_branch], axis=1)
merged = Dense(512, activation='softmax')(merged)
merged = Dropout(0.8)(merged)
merged = Dense(2)(merged)
output = Activation('sigmoid')(merged)
model = Model(inputs=[tweet_input], outputs=[output])

adam=keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False)
model.compile(loss='hinge',
              optimizer= adam,
              metrics=['accuracy'])
model.summary()

Tags: branchencoderinputsizemergedactivationkerneltrigram