Python Keras:加载模型的训练速度慢6倍
TensorFlow 2.0(GPU版本)、CUDA 10.0、NVIDIA GeForce RTX 2060、Windows 10(1903) 我在做文本分类。我使用字符嵌入和LSTM将每个单词编码为一个向量。这是我的模型: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
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