Как делать прогнозы с помощью обученной модели кодера-декодера (seq2seq) - PullRequest
0 голосов
/ 08 апреля 2020

Я делаю чат-бота с керасом на модели кодировщика-декодера. он обучен на предварительно обработанных данных, но я не знаю, как делать прогнозы. если кто-то может помочь, я буду очень благодарен.

моя модель обучения:

def trainModel (self, model, encoder_input_data, decoder_input_data, decoder_output_data):

    model.compile(optimizer='adam', loss ='categorical_crossentropy', metrics = ['accuracy'])

    history = model.fit([encoder_input_data, decoder_input_data], 
                 decoder_output_data, 
                 epochs=self.EPOCHS, 
                 batch_size=self.BATCH_SIZE)

    return model,history

предварительная обработка была выполнена до того, как эта функция и модель дают точность 90%, что вполне удовлетворительно.

Epoch 1/50 547/547 [======================= ==============] - 6 с 11 мс / шаг - потеря: 5,5433 - cc: 0,2448 эпоха 2/50 547/547 [=========== ===================] - 2s 4ms / step - потеря: 3.9287 - cc: 0.2468 Epoch 3/50 547/547 [====== ========================] - 2s 4ms / step - потеря: 3,5654 - a cc: 0,2945 Epoch 4/50 547/547 [= =============================] - 2s 4ms / step - потеря: 3.3557 - a cc: 0.3437 Epoch 5/50 547/547 [==============================] - 2s 4ms / step - потеря: 3.2008 - a cc: 0,3667 Epoch 6/50 547/547 [==============================] - 2 с 4 мс / шаг - потеря: 3,0697 - a cc: 0,3792 Epoch 7/50 547/547 [=============================] - 2 с 4 мс / шаг - потеря: 2.948 5 - cc: 0,4011 эпоха 8/50 547/547 [=============================] - 2 с 4 мс / шаг - потеря: 2.8267 - a cc: 0.4278 Epoch 9/50 547/547 [=================================== =] - 2 с 4 мс / шаг - потеря: 2,6933 - cc: 0,4497 Epoch 10/50 547/547 [=============================== ======] - 2s 4ms / step - потеря: 2.5609 - cc: 0.4585 Epoch 11/50 547/547 [==================== ===========] - 2s 4ms / step - потеря: 2,4310 - cc: 0,4777 Epoch 12/50 547/547 [============== ================] - 2s 4ms / step - потеря: 2,2963 - cc: 0,4859 Epoch 13/50 547/547 [========= =====================] - 2s 4ms / step - потеря: 2.1627 - cc: 0.5060 Epoch 14/50 547/547 [==== ==========================] - 2s 4ms / step - потеря: 2.0465 - cc: 0.5324 Epoch 15/50 547/547 [==============================] - 2s 4ms / step - потеря: 1.9176 - a cc: 0.5470 Epoch 16 / 50 547/547 [==============================] - 2 с 4 мс / шаг - потеря: 1,7950 - cc: 0.5707 Epoch 17/50 547/547 [==============================] - 2s 4ms / step - потеря: 1,6821 - a cc: 0.5938 Epoch 18/50 547/547 [=============================] - 2s 4ms / шаг - потеря: 1.5784 - a cc: 0.6075 Epoch 19/50 547/547 [==================================== ] - 2 с 4 мс / шаг - потеря: 1,4752 - cc: 0,6280 Эпоха 20/50 547/547 [================================ =====] - 2s 4ms / step - потеря: 1,3777 - cc: 0,6442 Epoch 21/50 547/547 [===================== ==========] - 2s 4ms / step - потеря: 1.2829 - cc: 0.6627 Epoch 22/50 547/547 [=============== ===============] - 2s 4ms / step - потеря: 1.1916 - cc: 0.6870 Epoch 23/50 547/547 [========== ====================] - 2s 4ms / step - потеря: 1.1076 - cc: 0.7066 Epoch 24/50 547/547 [===== =========================] - 2s 4ms / step - потеря: 1,0287 - cc: 0,7250 Epoch 25/50 547/547 [ ==============================] - 2 с 4 мс / шаг - потеря: 0,9521 - cc: 0,7439 Эпоха 26 / 50 547/547 [==============================] - 2 с 4 мс / шаг - потеря: 0,8797 - cc : 0.7645 Epoch 27/50 547/547 [=====================================] - 2s 4ms / step - потеря: 0.8093 - a cc: 0,7867 Epoch 28/50 547/547 [=============================] - 2s 4ms / шаг - потеря: 0,7432 - cc: 0,8042 Эпоха 29/50 547/547 [==================================== ] - 2 с 4 мс / шаг - потеря: 0,6820 - cc: 0,8256 Эпоха 30/50 547/547 [================================ =====] - 2s 4ms / step - потеря: 0.6243 - a cc: 0.8410 Epoch 31/50 547/547 [===================== ==========] - 2s 4ms / step - потеря: 0,5672 - cc: 0,8567 Epoch 32/50 547/547 [=============== ===============] - 2s 4ms / step - потеря: 0.5185 - cc: 0.8680 Epoch 33/50 547/547 [========== ====================] - 2s 4ms / step - потеря: 0,4723 - cc: 0,8744 Epoch 34/50 547/547 [===== =========================] - 2 с 4 мс / шаг - потеря: 0,4299 - cc: 0,8806 Epoch 35/50 547/547 [ ==============================] - 2s 4ms / step - потеря: 0.3894 - cc: 0.8863 Epoch 36 / 50 547/547 [==============================] - 2 с 4 мс / шаг - потеря: 0,3519 - cc: 0,8894 Epoch 37/50 547/547 [=====================================] - 2s 4ms / step - потеря: 0.3168 - a cc: 0,8909 Epoch 38/50 547/547 [=============================] - 2 с 4 мс / шаг - потеря: 0,2861 - cc: 0,8923 Epoch 39/50 547/547 [=============================] ======] - 2 с 4 мс / шаг - потеря: 0,2586 - cc: 0,8943 Epoch 40/50 547/547 [================================= ====] - 2s 4ms / step - потеря: 0.2320 - a cc: 0.8969 Epoch 41/50 547/547 [====================== =========] - 2s 4ms / step - потеря: 0,2096 - cc: 0,8982 Epoch 42/50 547/547 [================ ==============] - 2s 4ms / step - потеря: 0,1892 - cc: 0,8982 Epoch 43/50 547/547 [=========== ===================] - 2s 4ms / step - потеря: 0,1721 - cc: 0,8989 Epoch 44/50 547/547 [====== ========================] - 2 с 4 мс / шаг - потеря: 0,1567 - cc: 0,8991 Epoch 45/50 547/547 [= =============================] - 2 с 4 мс / шаг - потеря: 0,1425 - cc: 0,8996 эпоха 46/50 547/547 [==============================] - 2 с 4 мс / шаг - потеря: 0,1295 - cc: 0.8996 Epoch 47/50 547/547 [====================================] - 2s 4ms / step - потеря: 0.1174 - a cc: 0,8998 Epoch 48/50 547/547 [=============================] - 2 с 4 мс / шаг - потеря: 0.1083 - cc: 0.9000 Epoch 49/50 547/547 [=============================] =====] - 2 с 4 мс / шаг - потеря: 0,1000 - cc: 0,9000 Epoch 50/50 547/547 [================================ ====] - 2s 4ms / step - потеря: 0,0930 - cc: 0,8998

Я сохранил свою модель и затем перезагрузил ее:

 serialize model to JSON
 model_json = model.to_json()
 with open("model.json", "w") as json_file:
     json_file.write(model_json)
 #serialize weights to HDF5
 model.save_weights("model.h5")
 print("Saved model to disk")

 #load json and create model
 json_file = open('model.json', 'r')
 loaded_model_json = json_file.read()
 json_file.close()
 loaded_model = model_from_json(loaded_model_json)
 #load weights into new model
 loaded_model.load_weights("model.h5")
 print("Loaded model from disk")

Пожалуйста, дайте мне знать как делать прогнозы с этой моделью.

...