Python Keras:加载模型的训练速度慢6倍

Python Keras:加载模型的训练速度慢6倍,python,tensorflow,keras,tf.keras,Python,Tensorflow,Keras,Tf.keras,TensorFlow 2.0(GPU版本)、CUDA 10.0、NVIDIA GeForce RTX 2060、Windows 10(1903) 我在做文本分类。我使用字符嵌入和LSTM将每个单词编码为一个向量。这是我的模型: import tensorflow as tf from tensorflow.keras.models import Sequential, Model, load_model, model_from_json from tensorflow.keras.layers

TensorFlow 2.0(GPU版本)、CUDA 10.0、NVIDIA GeForce RTX 2060、Windows 10(1903)

我在做文本分类。我使用字符嵌入和LSTM将每个单词编码为一个向量。这是我的模型:

import tensorflow as tf
from tensorflow.keras.models import Sequential, Model, load_model, model_from_json
from tensorflow.keras.layers import Input, Embedding, LSTM, TimeDistributed, Multiply, Masking, Concatenate, Dense
from tensorflow.keras.utils import to_categorical

import numpy as np

import re

训练时间:每个样本23毫秒

Train on 1 samples Epoch 1/10 4/1 [==============================================] - 16s 4s/sample - loss: 0.6840 - accuracy: 0.7500 Epoch 2/10 4/1 [==============================================] - 0s 23ms/sample - loss: 0.6618 - accuracy: 1.0000 Epoch 3/10 4/1 [==============================================] - 0s 23ms/sample - loss: 0.6335 - accuracy: 1.0000 %%time model.predict([[input_1], [mask_1], [input_2], [mask_2]]) 预测时间较短:37 vs 63 ms。但输出略有不同。

%%time model_1.predict([[input_1], [mask_1], [input_2], [mask_2]]) 训练速度慢6倍:每个样本139 vs 23 ms

Train on 1 samples Epoch 1/10 4/1 [==============================================] - 4s 1s/sample - loss: 0.0000e+00 - accuracy: 1.0000 Epoch 2/10 4/1 [==============================================] - 1s 133ms/sample - loss: 0.0000e+00 - accuracy: 1.0000 Epoch 3/10 4/1 [==============================================] - 1s 139ms/sample - loss: 0.0000e+00 - accuracy: 1.0000 Train on 1 samples Epoch 1/10 4/1 [==============================================] - 4s 1s/sample - loss: 0.6805 - accuracy: 0.7500 Epoch 2/10 4/1 [==============================================] - 1s 145ms/sample - loss: 0.6526 - accuracy: 1.0000 Epoch 3/10 4/1 [==============================================] - 1s 149ms/sample - loss: 0.6186 - accuracy: 1.0000 训练时间:每个样本149对23毫秒

Train on 1 samples Epoch 1/10 4/1 [==============================================] - 4s 1s/sample - loss: 0.0000e+00 - accuracy: 1.0000 Epoch 2/10 4/1 [==============================================] - 1s 133ms/sample - loss: 0.0000e+00 - accuracy: 1.0000 Epoch 3/10 4/1 [==============================================] - 1s 139ms/sample - loss: 0.0000e+00 - accuracy: 1.0000 Train on 1 samples Epoch 1/10 4/1 [==============================================] - 4s 1s/sample - loss: 0.6805 - accuracy: 0.7500 Epoch 2/10 4/1 [==============================================] - 1s 145ms/sample - loss: 0.6526 - accuracy: 1.0000 Epoch 3/10 4/1 [==============================================] - 1s 149ms/sample - loss: 0.6186 - accuracy: 1.0000 训练1个样本 纪元1/10 4/1[==========================================]-4s 1s/样本-损耗:0.6805-精度:0.7500 纪元2/10 4/1[==========================================]-1s 145ms/样本-损失:0.6526-准确度:1.0000 纪元3/10 4/1[=============================================]-1s 149ms/样本-损耗:0.6186-准确度:1.0000
问题出在哪里?

您好,我也有同样的问题,我的模型第一次训练时速度非常快,但在我通过创建检查点保存模型并随后加载后速度变得非常慢。你能解决你的问题吗?我切换到Pytork。这是一个解决方案。好的,谢谢@你能解决你的问题吗? Train on 1 samples Epoch 1/10 4/1 [==============================================] - 4s 1s/sample - loss: 0.0000e+00 - accuracy: 1.0000 Epoch 2/10 4/1 [==============================================] - 1s 133ms/sample - loss: 0.0000e+00 - accuracy: 1.0000 Epoch 3/10 4/1 [==============================================] - 1s 139ms/sample - loss: 0.0000e+00 - accuracy: 1.0000
model.save_weights('model_V2.h5')
model_json = model.to_json()
with open('model_V2.json', "w") as json_file:
    json_file.write(model_json)
json_file.close()

json_file = open("model_V2.json", 'r')
loaded_model_json = json_file.read()
json_file.close()

model_2 = model_from_json(loaded_model_json)
#model_2.load_weights("model_V2.h5")

model_2.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model_2.fit([[input_1], [mask_1], [input_2], [mask_2]], Y, epochs=10)
Train on 1 samples Epoch 1/10 4/1 [==============================================] - 4s 1s/sample - loss: 0.6805 - accuracy: 0.7500 Epoch 2/10 4/1 [==============================================] - 1s 145ms/sample - loss: 0.6526 - accuracy: 1.0000 Epoch 3/10 4/1 [==============================================] - 1s 149ms/sample - loss: 0.6186 - accuracy: 1.0000