Потеря и точность обучения остаются такими же, как и точность проверки - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь обучить модель 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...