我正在尝试使用keras fune-tuning开发图像分类应用程序。 我将该应用程序部署到Web服务器,并且图像分类成功。
但是,当同时在两台或多台计算机上使用该应用程序时,会出现以下错误消息,并且该应用程序无法正常工作。
TypeError:无法将feed_dict键解释为张量:Tensor Tensor(“ Placeholder:0”,shape =(3,3,3,64),dtype = float32)不是此图的元素。
这是我的图像分类代码。
img_height, img_width = 224, 224
channels = 3
input_tensor = Input(shape=(img_height, img_width, channels))
vgg19 = VGG19(include_top=False, weights='imagenet', input_tensor=input_tensor)
fc = Sequential()
fc.add(Flatten(input_shape=vgg19.output_shape[1:]))
fc.add(Dense(256, activation='relu'))
fc.add(Dropout(0.5))
fc.add(Dense(3, activation='softmax'))
model = Model(inputs=vgg19.input, outputs=fc(vgg19.output))
model.load_weights({h5_file_path})
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
img = image.load_img({image_file_path}, target_size=(img_height, img_width))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = x / 255.0
pred = model.predict(x)[0]
如何在多台计算机上同时运行此应用程序?
感谢您阅读这篇文章。
答案 0 :(得分:4)
我发现有两种解决方法,具体取决于各种环境:
使用clear_session()
函数:
from keras import backend as K
然后,在预测所有数据之后,在函数的开头或结尾执行以下操作:
K.clear_session()
呼叫_make_predict_function()
:
加载经过训练的模型调用后:
model._make_predict_function()
请参见explanation
禁用线程:
如果您正在运行django服务器,请使用以下命令:
python manage.py runserver --nothreading
对于烧瓶使用此:
flask run --without-threads
如果以上解决方案均无效,请检查以下链接keras issue#6462,keras issue#2397