Django整合Keras报错
在正常的 python 程序里运行没有问题,在 django 里将模型加载与模型使用的代码放在一起也没有问题,但是一旦将加载与使用的过程分开就会出现这个问题
解决方法
在初始化加载模型之后,就随便生成一个向量让 model 执行一次 predict 函数,之后再使用就不会有问题了
我自己的代码:
saved_model_weights_file_path = os.path.join(MODEL_FOLDER, 'east_model_weights_3T736.h5')
east = East()
east_detect = east.east_network()
east_detect.load_weights(saved_model_weights_file_path)
East_detect_exe = east_detect
first_line = predict(East_detect_exe, 'image_process/test.jpg', 0.9)
print('first_line^^^^^^^^^^^^^^^^^^',first_line)
# 加载模型,django 会在 web 应用初始化时执行这段代码
from keras.models import load_model
print 'load model...'
model_COC = load_model(sys.path[0] + '/resource/cate_class_model.h5')
model_COE = load_model(sys.path[0] + '/resource/emo_class_model.h5')
print 'load done.'
# load 进来模型紧接着就执行一次 predict 函数
print 'test model...'
print model_COC.predict(np.zeros((1, len(word_index)+1)))
print model_COE.predict(np.zeros((1, len(word_index)+1)))
print 'test done.'
# 使用模型,在得到用户输入时会调用以下两个函数进行实时文本分类
# 输入参数 comment 为经过了分词与向量化处理后的模型输入
def category_class(comment):
global model_COC
result_vec = model_COC.predict(comment)
return result_vec
def emotion_class(comment):
global model_COE
result_vec = model_COE.predict(comment)
return result_vec