首页 > 解决方案 > 你能得到“无”的神经网络层的输出形状吗?

问题描述

型号总结:

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.

标签: pythontensorflowkeras

解决方案


不知何故,结果是使用 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)

参考https://github.com/jaromiru/AI-blog/issues/2


推荐阅读