首页 > 解决方案 > 作为服务的 TensorFlow 模型给出了错误

问题描述

我想使用冻结的 pb 模型,但有这样的问题:

ValueError:Fetch 参数不能解释为张量。(操作名称:“init_1” op:“NoOp”不是该图的元素。)

import base64
import json, argparse, time
import sys
import tensorflow as tf

from flask import Flask, request
from flask_cors import CORS

app = Flask(__name__)
cors = CORS(app)

def load_graph(frozen_graph_filename):
    with tf.gfile.GFile(frozen_graph_filename, "rb") as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())

    with tf.Graph().as_default() as graph:
        tf.import_graph_def(graph_def, name="prefix")
    return graph


@app.route("/predict", methods=['GET'])
def predict():
    start = time.time()

    persistent_sess.run(tf.global_variables_initializer())

    image_b64 = base64.urlsafe_b64encode(open('1.jpg', "rb").read())
    y_out = persistent_sess.run(y, feed_dict={ x:image_b64 })

    return 'Success'

if __name__ == "__main__":
    try:
        port = int(sys.argv[1])
    except Exception as e:
        port = 80

    print('Loading the model')
    graph = load_graph('output/open_nsfw.pb')
    x = graph.get_tensor_by_name('prefix/input:0')
    y = graph.get_tensor_by_name('prefix/predictions:0')

    persistent_sess = tf.Session(graph=graph)

    print('Starting the API')
    app.run(host='0.0.0.0', port=port, debug=True)

堆栈跟踪:

第 408 行,在 __init__ self._fetch_mapper = _FetchMapper.for_fetch(fetches) 文件 "/home/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py",第 238 行,在 for_fetch 返回 _ElementFetchMapper (获取,contraction_fn)文件“/home/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py”,第 274 行,在 __init__ 'Tensor. (%s)' % (fetch, str(e))) ValueError: Fetch 参数不能被解释为张量。(操作名称:“init_5” op:“NoOp”不是该图的元素。)在 for_fetch 返回 _ElementFetchMapper(fetches,contraction_fn) 文件“/home/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py”,第 274 行,在 __init__ 'Tensor. (%s)' % (fetch, str(e))) ValueError: Fetch 参数不能被解释为张量。(操作名称:“init_5” op:“NoOp”不是该图的元素。)在 for_fetch 返回 _ElementFetchMapper(fetches,contraction_fn) 文件“/home/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py”,第 274 行,在 __init__ 'Tensor. (%s)' % (fetch, str(e))) ValueError: Fetch 参数不能被解释为张量。(操作名称:“init_5” op:“NoOp”不是该图的元素。)

标签: pythontensorflowflask

解决方案


推荐阅读