Keras, использующие бэкэнд тензорного потока с ошибкой графа Flask - PullRequest
0 голосов
/ 27 июня 2019

Я развертываю модель Keras InceptionV3, используя Tensorflow, используя Flask-Python.Он обучается в наборе данных Places2-Challange MIT.Код прекрасно работает в Google Colab, но теперь я получаю эту ошибку:

on line: features = model_places.predict( img )

ValueError: Tensor Tensor("dense_2/Softmax:0", shape=(?, 162), dtype=float32) is not an element of this graph
def load_model_places():
    global base_model
    base_model = InceptionV3( weights=None , include_top=False )
    x = base_model.output
    x = GlobalAveragePooling2D()( x )
    x = Dense( 1024 , activation='relu' )( x )
    predictions = Dense( 162 , activation='softmax' )( x )
    global model_places
    model_places = Model( inputs=base_model.input , outputs=predictions )
    model_places.load_weights('metadata/places_weights.hdf5')

def prepare_image(image, target_dim):
    if image.mode != "RGB":
        image = image.convert( "RGB" )
    image = image.resize(target_dim)
    image = img_to_array( image )
    image = np.expand_dims( image , axis=0 )
    image = preprocess_input( image )
    return image

def image_pass_places(input_img):
    img_target_size = (224,224)
    img = prepare_image(input_img, img_target_size)
    features = model_places.predict( img )

Полный код: https://github.com/nottahagilani/tagpakistan-deploy-ml/blob/master/app.py

1 Ответ

0 голосов
/ 27 июня 2019

Да, это ошибка, когда вы прогнозируете по модели с керасом.Керас не сможет построить график из-за какой-то ошибки.Попробуйте предсказать изображения из модели с помощью тензорного потока.Просто замените эту строку кода

Код Keras:

features = model_places.predict( img )

Код тензорного потока:

import tensorflow as tf

graph = tf.get_default_graph()

импортируйте эту библиотеку в свой код и замените.

 with graph.as_default():
    features = model_places.predict( img ).tolist()

Если проблема все еще не решена:

если проблема все еще не решена, чем попытаться обновить график.

Поскольку ваш код в порядке, работайте с чистойсреда должна решить это.

Очистить кеш keras в ~ / .keras /

Запустить в новой среде с нужными пакетами (это легко сделать с помощью anaconda)

Убедитесь, что вы включеныновый сеанс, keras.backend.clear_session() должен удалить все существующие графики tf.

Код Keras:

keras.backend.clear_session()
features = model_places.predict( img )

Код TensorFlow:

import tensorflow as tf
with tf.Session() as sess:
    tf.reset_default_graph()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...