Keras,TensorFlow:“ TypeError:无法将feed_dict键解释为Tensor”

时间:2018-07-30 06:32:39

标签: python tensorflow keras

我正在尝试使用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]

如何在多台计算机上同时运行此应用程序?

感谢您阅读这篇文章。

1 个答案:

答案 0 :(得分:4)

我发现有两种解决方法,具体取决于各种环境:

  1. 使用clear_session()函数

    from keras import backend as K
    

    然后,在预测所有数据之后,在函数的开头或结尾执行以下操作:

    K.clear_session()
    
  2. 呼叫_make_predict_function()

    加载经过训练的模型调用后:

    model._make_predict_function()
    

    请参见explanation

  3. 禁用线程:

    如果您正在运行django服务器,请使用以下命令:

    python manage.py runserver --nothreading 
    

    对于烧瓶使用此:

    flask run --without-threads
    

如果以上解决方案均无效,请检查以下链接keras issue#6462keras issue#2397