Я пытаюсь обучить модель CNN с двумя входами, но я замечаю, что точность как для обучения, так и для проверки остается высокой и постоянной. Возможно, что-то не так с моим кодом. Любая помощь в решении этой проблемы приветствуется.
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense, Input, Dropout, concatenate
from tensorflow.keras.layers import Embedding, LSTM, GlobalMaxPooling1D
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.layers import Bidirectional
input_text = Input(shape=(100,), dtype='int32', name='input_text')
meta_input = Input(shape=(2,), name='meta_input')
embedding = Embedding(input_dim=len(tokenizer.word_index) + 1,
output_dim=300,
input_length=100)(input_text)
lstm = Bidirectional(LSTM(units=128,
dropout=0.9,
recurrent_dropout=0.9,
return_sequences=True),
merge_mode='concat')(embedding)
pool = GlobalMaxPooling1D()(lstm)
dropout = Dropout(0.5)(pool)
text_output = Dense(1, activation='sigmoid', name='aux_output')(dropout)
output = concatenate([text_output, meta_input])
output = Dense(n_codes, activation='relu')(output)
main_output = Dense(1, activation='softmax', name='main_output')(output)
model = Model(inputs=[input_text,meta_input], outputs=[output])
optimer = Adam(lr=.001)
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
model.summary()
model.fit([X1, X2], [y],
validation_data=([X_valid1,X_valid2], [y_valid]),
batch_size=64, epochs=20, verbose=1)
Результат: обучающие строки: 11416 проверочных строк: 2035 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 158] Модель: "model_6"
Слой (тип) Выходная форма Параметр # Подключено к
input_text (InputLayer) [(None, 100)] 0
embedding_7 (Embedding) (None, 100, 300) 889500 input_text [0] [0]
двунаправленный_7 (двунаправленный) (нет, 100, 256) 439296 embedding_7 [0] [0]
global_max_pooling1d_7 (GlobalM (нет, 256) 0 двунаправленный_7 [0] [ 0]
dropout_7 (Dropout) (нет, 256) 0 global_max_pooling1d_7 [0] [0]
aux_output (Dense) (нет, 1) 257 dropout_7 [0 ] [0]
meta_input (InputLayer) [(None, 2)] 0
concatenate_7 (Concatenate) (None, 3) 0 aux_output [0] [0 ] * 1 030 * meta_input [0] [0]
density_5 (Плотный) (Нет, 545) 2180 concatenate_7 [0] [0]
Всего параметров: 1,331,233 Обучаемые параметры: 1,331,233 Не - обучаемые параметры: 0
Поезд на 11416 выборках, проверка на 2035 выборках. Эпоха 1/20 11416/11416 [=================== ===========] - 143s 13ms / sample - потеря: 0.0254 - точность: 0.9982 - val_loss: 0.0236 - val_accuracy: 0.9982 Epoch 2/20 11416/11416 [========= =====================] - 143s 13мс / выборка - потеря: 0,0233 - точность: 0,9982 - val_loss: 0,0235 - val_accuracy: 0,9982 Epoch 3/20 11416/11416 [==============================] - 150 с 13 мс / выборка - потеря: 0,0233 - точность: 0,9982 - val_loss: 0,0233 - val_accuracy: 0.9982 Epoch 4/20 11416/11416 [====================================] - 166 с 15 мс / выборка - потеря: 0.0232 - точность: 0.9982 - val_loss: 0.0234 - val_accoracy: 0.9982 Epoch 5/20 11416/11416 [==================================== =] - 198 с 17 мс / выборка - потеря: 0,0232 - точность: 0,9982 - val_loss: 0,0234 - val_accuracy: 0 .9982 Epoch 6/20 11416/11416 [=====================================] - 236 с 21 мс / выборка - потеря: 0,0232 - точность: 0.9982 - val_loss: 0.0232 - val_accuracy: 0.9982 Epoch 7/20