Python 如何将四个二进制keras模型合并为一个(相同的输入,但4个不同的输出)

Python 如何将四个二进制keras模型合并为一个(相同的输入,但4个不同的输出),python,keras,Python,Keras,我正在尝试创建一个“文本”分类器。我有一个带有标签的数据集,其值包括“垃圾邮件”、“种族主义”、“性”、“侮辱”等 我有200万侮辱类别的标签示例 30K性分类标签示例 20K种族主义类别标签示例 50k标记的垃圾邮件类别示例 我创建了此模型(二进制): 目前,我有4个不同的模型,用于4个不同的类别。这降低了模型推理的速度。如何合并它们 离题:如果您可以改进我的LSTM模型架构以提高准确性,或者给我更多垃圾邮件、种族主义和性检测数据集的链接,那就太好了。应该很简单,将类编码为一个热点,更改输出层

我正在尝试创建一个“文本”分类器。我有一个带有标签的数据集,其值包括“垃圾邮件”、“种族主义”、“性”、“侮辱”等

我有
200万侮辱类别的标签示例
30K性分类标签示例
20K种族主义类别标签示例
50k标记的垃圾邮件类别示例

我创建了此模型(二进制):

目前,我有4个不同的模型,用于4个不同的类别。这降低了模型推理的速度。如何合并它们


离题:如果您可以改进我的LSTM模型架构以提高准确性,或者给我更多垃圾邮件、种族主义和性检测数据集的链接,那就太好了。

应该很简单,将类编码为一个热点,更改输出层(容量等于类),将损失调整为分类交叉熵,我有大约220万行,但是只有200万的有毒标签,只有50k的垃圾邮件等等…那么其他行的垃圾邮件值应该是多少呢?在垃圾邮件的情况下:如果spam=true==1,else=0,就像在链接中发布的一样。它是一个热编码矩阵,指示标签是真(1)还是假(0)。比如说,我有220万个训练排。我有5万行标记为“垃圾邮件”或“非垃圾邮件”。其他215万行标记为“无”。它们可以是垃圾邮件,也可以不是垃圾邮件……我不知道标签,对不起,我没能解释清楚。我现在意识到了。
inp1 = Input(shape=(max_len,))
e1 = Embedding(max_features+1, dim, weights=[glove_matrix],trainable = False,)(inp1)
x = CuDNNLSTM(max_len)(e1)
x = Dense(100, activation="relu",)(x)
x = Dropout(0.2)(x)
x = Dense(1, activation='sigmoid',kernel_regularizer=regularizers.l2(0.0001))(x)
checkpoint = ModelCheckpoint('spamModelv1.h5' , monitor='val_acc', save_best_only = True, mode ='auto')
callbacks_list = [checkpoint,EarlyStopping(patience=10,monitor='val_acc')]

model.fit(x_train,y_train, 
                      batch_size=128, 
                      validation_data=(x_test, y_test),
                      epochs=1000,
                      callbacks=callbacks_list)