python - 你能得到“无”的神经网络层的输出形状吗?
问题描述
型号总结:
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 195) 38220
_________________________________________________________________
dense_2 (Dense) (None, 400) 78400
_________________________________________________________________
dropout_1 (Dropout) (None, 400) 0
_________________________________________________________________
dense_3 (Dense) (None, 200) 80200
_________________________________________________________________
dropout_2 (Dropout) (None, 200) 0
_________________________________________________________________
dense_4 (Dense) (None, 3) 603
=================================================================
这里dense_4 (Dense)
有输出形状(None, 3)
。最后一层是输出层。由于“无”,我在 Flask 应用程序开发过程中遇到错误。这是烧瓶中的错误
raise ValueError("Tensor %s is not an element of this graph." % obj) ValueError: Tensor Tensor("dense_8/Softmax:0", shape=(?, 3), dtype=float32) is not an element of this图形。
我试图添加这段代码
global graph
graph = tf.get_default_graph()
并在预测 api 中包含以下代码
with graph.as_default():
y_hat = model.predict(x_test, batch_size=1, verbose=1)
后来我看到另一个错误
tensorflow.python.framework.errors_impl.FailedPreconditionError:从容器读取资源变量dense_6/kernel时出错:localhost。这可能意味着该变量未初始化。未找到:资源 localhost/dense_6/kernel/class tensorflow::Var 不存在。
[[{{node dense_6/MatMul/ReadVariableOp}}]]
知道为什么吗?完整的错误跟踪:
here classifier model loaded
127.0.0.1 - - [08/Jan/2020 13:13:19] "[1m[35mPOST /predict HTTP/1.1[0m" 500 -´
Traceback (most recent call last):
File "C:\Users\user1\AppData\Local\Continuum\anaconda3\lib\site-
packages\flask\app.py", line 2463, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\user1\AppData\Local\Continuum\anaconda3\lib\site-
packages\flask\app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\user1\AppData\Local\Continuum\anaconda3\lib\site-
packages\flask\app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\user1\AppData\Local\Continuum\anaconda3\lib\site-
packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Users\user1\AppData\Local\Continuum\anaconda3\lib\site-
packages\flask\app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\user1\AppData\Local\Continuum\anaconda3\lib\site-
packages\flask\app.py", line 1951, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\user1\AppData\Local\Continuum\anaconda3\lib\site-
packages\flask\app.py", line 1820, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\user1\AppData\Local\Continuum\anaconda3\lib\site-
packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Users\user1\AppData\Local\Continuum\anaconda3\lib\site-
packages\flask\app.py", line 1949, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\user1\AppData\Local\Continuum\anaconda3\lib\site-
packages\flask\app.py", line 1935, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\user1\Desktop\flask_apps\app.py", line 147, in predict
y = model.predict(X_test,batch_size=1, verbose=1)
File "C:\Users\user1\AppData\Roaming\Python\Python37\site-
packages\tensorflow\python\keras\engine\training.py", line 1078, in
predict
callbacks=callbacks)
File "C:\Users\user1\AppData\Roaming\Python\Python37\site-
packages\tensorflow\python\keras\engine\training_arrays.py", line 363, in
model_iteration
batch_outs = f(ins_batch)
File "C:\Users\user1\AppData\Roaming\Python\Python37\site-
packages\tensorflow\python\keras\backend.py", line 3292, in __call__
run_metadata=self.run_metadata)
File "C:\Users\user1\AppData\Roaming\Python\Python37\site-
packages\tensorflow\python\client\session.py", line 1458, in __call__
run_metadata_ptr)
tensorflow.python.framework.errors_impl.FailedPreconditionError: Error
while reading resource variable dense_6/kernel from Container: localhost.
This could mean that the variable was uninitialized. Not found: Resource
localhost/dense_6/kernel/class tensorflow::Var does not exist.
解决方案
不知何故,结果是使用 Keras 2.3 的 Tensorflow 后端出现设计错误。当我降级到 2.2.5 时。这个张量问题已经解决了。也使用了这个代码
在线程 1 上
session = tf.Session(graph=tf.Graph()) with session.graph.as_default(): k.backend.set_session(session) model = k.models.load_model(filepath)
在线程 2
使用 session.graph.as_default(): k.backend.set_session(session) model.predict(x, **kwargs)
推荐阅读
- javascript - 你如何用javascript反向填充进度条?
- resources - 在 SpringBoot 项目中,资源文件夹在底部不存在
- javascript - .js 文件在被 HTML 脚本调用时检测为 type:html。“即使其 MIME 类型(“text/html”)不是有效的 JavaScript MIME 类型,也已加载。”
- javascript - Javascript:字符串比较代码的解读
- git - 如何从我的 Git 存储库中删除补丁文件?
- python - 在 Databricks 上使用 Python/Spark 操作示例 json 列表
- c++ - OpenCv读/写视频色差
- flutter - 在颤动中按下后如何更改 ElevatedButton 的背景颜色,但我有三个所以选择时应该更改一个
- nlp - 如何通过规则合并 spaCy 中的实体
- javascript - 从函数内部的for循环返回值