python - 作为服务的 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”不是该图的元素。)
解决方案
推荐阅读
- vue.js - 在容器中放置 v-app-bar 内容有问题吗?
- sql - SQL 字节截断
- javascript - 如何使箭头键始终能够移动我的角色?
- java - Unable to get java command to use correct version of Java
- mysql - 如何使用 JSON_EXTRACT 获取字符串索引的值
- python - ValueError:无法将大小为 90000 的数组重塑为形状 (1,28,28,1)
- ruby-on-rails - useEffect / useState / setInterval React on Rails 组件不渲染
- html - 不是选择所有特定数据属性的第一个类型
- javascript - 如何使用 javascript 调整 Twitter URL 显示的大小?
- node.js - 当复制节点js自定义错误类超级错误变量消失时