系统信息
您可以使用我们的环境捕获来收集其中的一些信息
python -c“将tensorflow导入为tf;打印(tf.version.GIT_VERSION,tf.version.VERSION)”
v1.12.0-9492-g2c319fb415 2.0.0-alpha0
描述当前的行为
运行“flaskApp.py”时,加载模型并尝试使用“预测”对图像进行分类后,失败并显示错误:
tensorflow.python.framework.errors_impl.FailedPreconditionError:从容器读取资源变量softmax/内核时出错:本地主机。 这可能意味着该变量未初始化。 未找到:资源 localhost/softmax/kernel/N10tensorflow3VarE 不存在。
描述预期行为
应返回图像分类结果。
重现问题的代码
重现步骤:
git clone https://github.com/viaboxxsystems/deeplearning-showcase.git
git checkout tensorflow_2.0
pip3 install -r requirements.txt
export FLASK_APP=flaskApp.py
flask run
启动应用程序curl -X POST \
http://localhost:5000/net/MobileNet \
-H 'Postman-Token: ea35b79b-b34d-4be1-a80c-505c104050ec' \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F image=@/Users/haitham.b/Projects/ResearchProjects/CNNs/deeplearning-showcase/data/sample/valid/dogs/dog.1008.jpg
其他信息/日志
E0430 13:36:10.374372 123145501933568 app.py:1761] Exception on /net/MobileNet [POST]
Traceback (most recent call last):
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/haitham.b/Projects/Virtualenvs/deeplearning-showcase/flaskApp.py", line 97, in use_net_to_classify_image
prediction, prob = predict(net_name, image)
File "/Users/haitham.b/Projects/Virtualenvs/deeplearning-showcase/flaskApp.py", line 59, in predict
output_probability = net_models[cnn_name].predict(post_processed_input_images)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 1167, in predict
callbacks=callbacks)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_arrays.py", line 352, in model_iteration
batch_outs = f(ins_batch)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/keras/backend.py", line 3096, in __call__
run_metadata=self.run_metadata)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1440, in __call__
run_metadata_ptr)
File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py", line 548, in __exit__
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.FailedPreconditionError: Error while reading resource variable softmax/kernel from Container: localhost. This could mean that the variable was uninitialized. Not found: Resource localhost/softmax/kernel/N10tensorflow3VarE does not exist.
[[{{node softmax/MatMul/ReadVariableOp}}]]
有任何更新吗?
这不是构建/安装或错误/性能问题。 请在Stackoverflow 上发布此类支持问题。 有一个很大的社区可以支持您的问题并从中学习。 GitHub 主要用于解决安装和性能方面的错误。 谢谢!
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
from tensorflow.python.keras.backend import set_session
from tensorflow.python.keras.models import load_model
tf_config = some_custom_config
sess = tf.Session(config=tf_config)
graph = tf.get_default_graph()
# IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras!
# Otherwise, their weights will be unavailable in the threads after the session there has been set
set_session(sess)
model = load_model(...)
然后在每个请求中(即在每个线程中):
global sess
global graph
with graph.as_default():
set_session(sess)
model.predict(...)
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
from tensorflow.python.keras.backend import set_session from tensorflow.python.keras.models import load_model tf_config = some_custom_config sess = tf.Session(config=tf_config) graph = tf.get_default_graph() # IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras! # Otherwise, their weights will be unavailable in the threads after the session there has been set set_session(sess) model = load_model(...)
然后在每个请求中(即在每个线程中):
global sess global graph with graph.as_default(): set_session(sess) model.predict(...)
你真了不起!!!!! 这是最好的解决方案。 你能告诉我为什么它在添加会话后才起作用吗?
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
from tensorflow.python.keras.backend import set_session from tensorflow.python.keras.models import load_model tf_config = some_custom_config sess = tf.Session(config=tf_config) graph = tf.get_default_graph() # IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras! # Otherwise, their weights will be unavailable in the threads after the session there has been set set_session(sess) model = load_model(...)
然后在每个请求中(即在每个线程中):
global sess global graph with graph.as_default(): set_session(sess) model.predict(...)
你真了不起!!!!! 这是最好的解决方案。 你能告诉我为什么它在添加会话后才起作用吗?
谢谢你,非常欢迎你:)。
据我了解,问题在于张量流图和会话不是线程安全的。 因此,默认情况下为每个线程(即每个请求)创建一个新会话(不包含任何先前加载的权重,模型 aso)。 通过保存包含所有模型的全局会话并将其设置为在每个线程中由 keras 使用,问题就解决了。
关闭它,因为我知道它可以解决,但如果我弄错了,请告诉我。 谢谢!
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
from tensorflow.python.keras.backend import set_session from tensorflow.python.keras.models import load_model tf_config = some_custom_config sess = tf.Session(config=tf_config) graph = tf.get_default_graph() # IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras! # Otherwise, their weights will be unavailable in the threads after the session there has been set set_session(sess) model = load_model(...)
然后在每个请求中(即在每个线程中):
global sess global graph with graph.as_default(): set_session(sess) model.predict(...)
你真了不起!!!!! 这是最好的解决方案。 你能告诉我为什么它在添加会话后才起作用吗?
谢谢你,非常欢迎你:)。
据我了解,问题在于张量流图和会话不是线程安全的。 因此,默认情况下为每个线程(即每个请求)创建一个新会话(不包含任何先前加载的权重,模型 aso)。 通过保存包含所有模型的全局会话并将其设置为在每个线程中由 keras 使用,问题就解决了。
我对张量流版本 1.13.1 有同样的问题,上述解决方案对我有用。
我遇到了同样的问题,想知道 some_custom_config 的值是多少?
我遇到了同样的问题,想知道 some_custom_config 的值是多少?
如果您想配置会话(我必须这样做),您可以在此参数中传递配置。 否则就放弃吧。
我遇到了同样的问题,想知道 some_custom_config 的值是多少?
如果您想配置会话(我必须这样做),您可以在此参数中传递配置。 否则就放弃吧。
非常感谢! 现在一切都运行得很完美。
感谢提供代码。 我在 Kera 上运行 BERT 时遇到了类似的错误消息。 我尝试了您的解决方案,但似乎无法使其正常工作。 非常感谢任何指导!
```FailedPreconditionError Traceback(最近一次调用)
11validation_data=([test_input_ids, test_input_masks, test_segment_ids], test_labels),
12个时期=1,
---> 13 批量大小=32
14)
3帧
/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py 在 __call__(self, args, * kwargs)
第1456章
第1457章
-> 1458 run_metadata_ptr)
第 1459 章
第1460章
FailedPreconditionError:从容器读取资源变量 bert_layer_9_module/bert/encoder/layer_3/output/LayerNorm/gamma 时出错:localhost。 这可能意味着该变量未初始化。 未找到:资源 localhost/bert_layer_9_module/bert/encoder/layer_3/output/LayerNorm/gamma/N10tensorflow3VarE 不存在。
[[{{节点bert_layer_9/bert_layer_9_module_apply_tokens/bert/encoder/layer_3/output/LayerNorm/batchnorm/mul/ReadVariableOp}}]]```
在自定义 keras 层内使用来自 tf-hub 的 Elmo 嵌入时,我遇到了类似的错误。
tensorflow.python.framework.errors_impl.FailedPreconditionError:发现 2 个根错误。
(0) 失败的前提条件:从 Container: localhost 读取资源变量 ElmoEmbeddingLayer_module/bilm/CNN_high_0/b_carry 时出错。 这可能意味着该变量未初始化。 未找到:资源 localhost/ElmoEmbeddingLayer_module/bilm/CNN_high_0/b_carry/class tensorflow::Var 不存在。
[[{{节点 ElmoEmbeddingLayer/ElmoEmbeddingLayer_module_apply_default/bilm/add/ReadVariableOp}}]]
(1) 失败的前提条件:从 Container: localhost 读取资源变量 ElmoEmbeddingLayer_module/bilm/CNN_high_0/b_carry 时出错。 这可能意味着该变量未初始化。 未找到:资源 localhost/ElmoEmbeddingLayer_module/bilm/CNN_high_0/b_carry/class tensorflow::Var 不存在。
[[{{节点 ElmoEmbeddingLayer/ElmoEmbeddingLayer_module_apply_default/bilm/add/ReadVariableOp}}]]
[[metrics/acc/Identity/_199]]
0 成功操作。
0 派生错误被忽略。
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
from tensorflow.python.keras.backend import set_session from tensorflow.python.keras.models import load_model tf_config = some_custom_config sess = tf.Session(config=tf_config) graph = tf.get_default_graph() # IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras! # Otherwise, their weights will be unavailable in the threads after the session there has been set set_session(sess) model = load_model(...)
然后在每个请求中(即在每个线程中):
global sess global graph with graph.as_default(): set_session(sess) model.predict(...)
你真了不起!!!!! 这是最好的解决方案。 你能告诉我为什么它在添加会话后才起作用吗?
谢谢你,非常欢迎你:)。
据我了解,问题在于张量流图和会话不是线程安全的。 因此,默认情况下为每个线程(即每个请求)创建一个新会话(不包含任何先前加载的权重,模型 aso)。 通过保存包含所有模型的全局会话并将其设置为在每个线程中由 keras 使用,问题就解决了。
非常感谢你做的这些。
就我而言,我做得有点不同,以防它对任何人有帮助:
# on thread 1
session = tf.Session(graph=tf.Graph())
with session.graph.as_default():
k.backend.set_session(session)
model = k.models.load_model(filepath)
# on thread 2
with session.graph.as_default():
k.backend.set_session(session)
model.predict(x, **kwargs)
这里的新颖之处在于允许加载多个模型(一次)并在多个线程中使用。
默认情况下,加载模型时使用“默认” Session
和“默认” Graph
。
但是在这里你创造了新的。
还要注意Graph
存储在Session
对象中,这样更方便一些。
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
from tensorflow.python.keras.backend import set_session from tensorflow.python.keras.models import load_model tf_config = some_custom_config sess = tf.Session(config=tf_config) graph = tf.get_default_graph() # IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras! # Otherwise, their weights will be unavailable in the threads after the session there has been set set_session(sess) model = load_model(...)
然后在每个请求中(即在每个线程中):
global sess global graph with graph.as_default(): set_session(sess) model.predict(...)
你真了不起!!!!! 这是最好的解决方案。 你能告诉我为什么它在添加会话后才起作用吗?
谢谢你,非常欢迎你:)。
据我了解,问题在于张量流图和会话不是线程安全的。 因此,默认情况下为每个线程(即每个请求)创建一个新会话(不包含任何先前加载的权重,模型 aso)。 通过保存包含所有模型的全局会话并将其设置为在每个线程中由 keras 使用,问题就解决了。非常感谢你做的这些。
就我而言,我做得有点不同,以防它对任何人有帮助:
# on thread 1 session = tf.Session(graph=tf.Graph()) with session.graph.as_default(): k.backend.set_session(session) model = k.models.load_model(filepath) # on thread 2 with session.graph.as_default(): k.backend.set_session(session) model.predict(x, **kwargs)
这里的新颖之处在于允许加载多个模型(一次)并在多个线程中使用。
默认情况下,加载模型时使用“默认”Session
和“默认”Graph
。
但是在这里你创造了新的。
还要注意Graph
存储在Session
对象中,这样更方便一些。
谢谢你的回答
我在使用Flask和多线程时也面临这个问题, 有用。
谢谢:笑脸:
系统信息
- 我是否编写了自定义代码(而不是使用 TensorFlow 中提供的股票示例脚本):是的,在这里找到(https://github.com/viaboxxsystems/deeplearning-showcase/blob/tensorflow_2.0/flaskApp.py)
- 操作系统平台和发行版(例如 Linux Ubuntu 16.04):MAC OSX 10.14.4
- TensorFlow 版本(使用下面的命令):2.0.0-alpha0
- Python 版本:Python 3.6.5
您可以使用我们的环境捕获来收集其中的一些信息
python -c“将tensorflow导入为tf;打印(tf.version.GIT_VERSION,tf.version.VERSION)”
v1.12.0-9492-g2c319fb415 2.0.0-alpha0描述当前的行为
运行“flaskApp.py”时,加载模型并尝试使用“预测”对图像进行分类后,失败并显示错误:tensorflow.python.framework.errors_impl.FailedPreconditionError:从容器读取资源变量softmax/内核时出错:本地主机。 这可能意味着该变量未初始化。 未找到:资源 localhost/softmax/kernel/N10tensorflow3VarE 不存在。
描述预期行为
应返回图像分类结果。重现问题的代码
重现步骤:
git clone https://github.com/viaboxxsystems/deeplearning-showcase.git
git checkout tensorflow_2.0
- (如果需要)
pip3 install -r requirements.txt
export FLASK_APP=flaskApp.py
- 以
flask run
启动应用程序- 使用 Postman 或 curl 将任何狗或猫的图像发送到应用程序
或者curl -X POST \ http://localhost:5000/net/MobileNet \ -H 'Postman-Token: ea35b79b-b34d-4be1-a80c-505c104050ec' \ -H 'cache-control: no-cache' \ -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \ -F image=@/Users/haitham.b/Projects/ResearchProjects/CNNs/deeplearning-showcase/data/sample/valid/dogs/dog.1008.jpg
其他信息/日志
E0430 13:36:10.374372 123145501933568 app.py:1761] Exception on /net/MobileNet [POST] Traceback (most recent call last): File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app response = self.full_dispatch_request() File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request rv = self.handle_user_exception(e) File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception reraise(exc_type, exc_value, tb) File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise raise value File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request rv = self.dispatch_request() File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/Users/haitham.b/Projects/Virtualenvs/deeplearning-showcase/flaskApp.py", line 97, in use_net_to_classify_image prediction, prob = predict(net_name, image) File "/Users/haitham.b/Projects/Virtualenvs/deeplearning-showcase/flaskApp.py", line 59, in predict output_probability = net_models[cnn_name].predict(post_processed_input_images) File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 1167, in predict callbacks=callbacks) File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_arrays.py", line 352, in model_iteration batch_outs = f(ins_batch) File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/keras/backend.py", line 3096, in __call__ run_metadata=self.run_metadata) File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1440, in __call__ run_metadata_ptr) File "/Users/haitham.b/venv/tensorflow2.0alpha/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py", line 548, in __exit__ c_api.TF_GetCode(self.status.status)) tensorflow.python.framework.errors_impl.FailedPreconditionError: Error while reading resource variable softmax/kernel from Container: localhost. This could mean that the variable was uninitialized. Not found: Resource localhost/softmax/kernel/N10tensorflow3VarE does not exist. [[{{node softmax/MatMul/ReadVariableOp}}]]
我也面临这个问题
tensorflow.python.framework.errors_impl.FailedPreconditionError:从容器读取资源变量dense_6/kernel时出错:本地主机。 这可能意味着该变量未初始化。 未找到:资源 localhost/dense_6/kernel/class tensorflow::Var 不存在。
[[{{节点密集_6/MatMul/ReadVariableOp}}]]
不好意思,我也面临这个问题。 但是您的回答并不能解决我的问题,也许它处于不同的状态。 在我的问题中,当我在 keras 中使用 VGG16 并且我想使用迭代功能时loss_value, grads_value = iterate([np.zeros((1, 150, 150, 3))])
但是出现了类似的问题。
FailedPreconditionError:从容器读取资源变量 block1_conv1_12/bias 时出错:localhost。 未找到:资源 localhost/block1_conv1_12/bias/N10tensorflow3VarE 不存在。[[{{node block1_conv1_12/BiasAdd/ReadVariableOp}}]]
在https://github.com/JarvisUSTC/deep-learning-with-python-notebooks/blob/master/5.4-visualizing-what-convnets-learn.ipynb 中,没有遇到问题。
from tensorflow.python.keras.backend import set_session
from tensorflow.python.keras.models import load_model
from tensorflow.python.keras.applications import VGG16
sess = tf.Session()
graph = tf.get_default_graph()
set_session(sess)
#model = load_model('vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5')
model = VGG16(weights='imagenet',include_top=False)
layer_name = 'block3_conv1'
filter_index = 0
layer_output = model.get_layer(layer_name).output
loss = K.mean(layer_output[:, :, :, filter_index])
grads = K.gradients(loss, model.input)[0]
grads /= (K.sqrt(K.mean(K.square(grads))) + 1e-5)
import numpy as np
global sess
global graph
with graph.as_default():
set_session(sess)
iterate = K.function([model.input], [loss, grads])
loss_value, grads_value = iterate([np.zeros((1, 150, 150, 3))])
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
from tensorflow.python.keras.backend import set_session from tensorflow.python.keras.models import load_model tf_config = some_custom_config sess = tf.Session(config=tf_config) graph = tf.get_default_graph() # IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras! # Otherwise, their weights will be unavailable in the threads after the session there has been set set_session(sess) model = load_model(...)
然后在每个请求中(即在每个线程中):
global sess global graph with graph.as_default(): set_session(sess) model.predict(...)
你真了不起!!!!! 这是最好的解决方案。 你能告诉我为什么它在添加会话后才起作用吗?
谢谢你,非常欢迎你:)。
据我了解,问题在于张量流图和会话不是线程安全的。 因此,默认情况下为每个线程(即每个请求)创建一个新会话(不包含任何先前加载的权重,模型 aso)。 通过保存包含所有模型的全局会话并将其设置为在每个线程中由 keras 使用,问题就解决了。我对张量流版本 1.13.1 有同样的问题,上述解决方案对我有用。
这个解决方案也对我有用..谢谢@eliadl
在 TF 2.x 中,没有 session()。 我如何解决它? 我的 TF 2.x 代码中发生了同样的问题。
@SungmanHong而不是tf.Session
尝试使用tf.compat.v1.Session
。
在 TF 2.x 中,没有 session()。 我如何解决它? 我的 TF 2.x 代码中发生了同样的问题。
在 TF 2.X 中导入会话tf.compat.v1.Session()
在 TF 2.X 中导入 keras.backend.get_session
tf.compat.v1.keras.backend.get_session()
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
from tensorflow.python.keras.backend import set_session from tensorflow.python.keras.models import load_model tf_config = some_custom_config sess = tf.Session(config=tf_config) graph = tf.get_default_graph() # IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras! # Otherwise, their weights will be unavailable in the threads after the session there has been set set_session(sess) model = load_model(...)
然后在每个请求中(即在每个线程中):
global sess global graph with graph.as_default(): set_session(sess) model.predict(...)
这对我有用,谢谢
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
from tensorflow.python.keras.backend import set_session from tensorflow.python.keras.models import load_model tf_config = some_custom_config sess = tf.Session(config=tf_config) graph = tf.get_default_graph() # IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras! # Otherwise, their weights will be unavailable in the threads after the session there has been set set_session(sess) model = load_model(...)
然后在每个请求中(即在每个线程中):
global sess global graph with graph.as_default(): set_session(sess) model.predict(...)
伙计,你是天才,太棒了,你刚刚保存了我的项目,非常感谢你
在 TF 2.x 中,没有 session()。 我如何解决它? 我的 TF 2.x 代码中发生了同样的问题。
在 TF 2.X 中导入会话
tf.compat.v1.Session()
在 TF 2.X 中导入 keras.backend.get_session
tf.compat.v1.keras.backend.get_session()
我已经使用了给定的解决方案,但仍然对我不起作用,我收到了错误
`` The graph tensor has name: anchors/Variable:0
/usr/local/lib/python3.6/dist-packages/keras/engine/training_generator.py:49: UserWarning: Using a generator with
use_multiprocessing=True and multiple workers may duplicate your data. Please consider using the
keras.utils.Sequence 类。
UserWarning('使用带有use_multiprocessing=True
的生成器'
FailedPreconditionError Traceback(最近一次调用)
4 learning_rate=config.LEARNING_RATE,
5个时期=4,
----> 6 层 = = ='heads')
6帧
训练中的/usr/local/lib/python3.6/dist-packages/mrcnn/model.py(self、train_dataset、val_dataset、learning_rate、epochs、layers、augmentation)
2350 max_queue_size=100,
2351 工人=工人,
-> 2352 use_multiprocessing=True,
第2353章
2354 self.epoch = max(self.epoch, epochs)
/usr/local/lib/python3.6/dist-packages/keras/legacy/interfaces.py在包装器(参数,* kwargs)
89 warnings.warn('将您的' + object_name + '
调用更新为 ' +
90 'Keras 2 API:' + 签名,堆栈级别 = 2)
---> 91 返回函数(参数,* kwargs)
92 wrapper._original_function = func
93 返回包装器
/usr/local/lib/python3.6/dist-packages/keras/engine/training.py in fit_generator(self、generator、steps_per_epoch、epochs、verbose、callbacks、validation_data、validation_steps、validation_freq、class_weight、max_queue_size、workers、use_multiprocessing ,洗牌,initial_epoch)
第1730章
1731洗牌=洗牌,
-> 1732 initial_epoch=initial_epoch)
1733
第1734章
/usr/local/lib/python3.6/dist-packages/keras/engine/training_generator.py in fit_generator(模型、生成器、steps_per_epoch、epochs、verbose、回调、validation_data、validation_steps、validation_freq、class_weight、max_queue_size、workers、use_multiprocessing ,洗牌,initial_epoch)
第218话
第219话
--> 220 reset_metrics=False)
221
222 出局 = to_list(出局)
/usr/local/lib/python3.6/dist-packages/keras/engine/training.py in train_on_batch(self, x, y, sample_weight, class_weight, reset_metrics)
1512 ins = x + y + sample_weights
1513 self._make_train_function()
-> 1514 个输出 = self.train_function(ins)
1515
1516 如果 reset_metrics:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/backend.py 在 __call__(self,inputs)
3630
第 3631 章
-> 3632 run_metadata=self.run_metadata)
第 3633 章
3634 output_structure = nest.pack_sequence_as(
/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py 在 __call__(self, args, * kwargs)
第1470章
第1471章
-> 1472 run_metadata_ptr)
第 1473 章
第1474章
FailedPreconditionError:从容器读取资源变量锚点/变量时出错:本地主机。 这可能意味着该变量未初始化。 未找到:资源 localhost/anchors/Variable/N10tensorflow3VarE 不存在。
[[{{node ROI/ReadVariableOp}}]] ```
请帮忙!!!
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
from tensorflow.python.keras.backend import set_session from tensorflow.python.keras.models import load_model tf_config = some_custom_config sess = tf.Session(config=tf_config) graph = tf.get_default_graph() # IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras! # Otherwise, their weights will be unavailable in the threads after the session there has been set set_session(sess) model = load_model(...)
然后在每个请求中(即在每个线程中):
global sess global graph with graph.as_default(): set_session(sess) model.predict(...)
你真了不起!!!!! 这是最好的解决方案。 你能告诉我为什么它在添加会话后才起作用吗?
谢谢你,非常欢迎你:)。
据我了解,问题在于张量流图和会话不是线程安全的。 因此,默认情况下为每个线程(即每个请求)创建一个新会话(不包含任何先前加载的权重,模型 aso)。 通过保存包含所有模型的全局会话并将其设置为在每个线程中由 keras 使用,问题就解决了。
请它显示 some_custom_config 未定义
请它显示 some_custom_config 未定义
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
from tensorflow.python.keras.backend import set_session from tensorflow.python.keras.models import load_model tf_config = some_custom_config sess = tf.Session(config=tf_config) graph = tf.get_default_graph() # IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras! # Otherwise, their weights will be unavailable in the threads after the session there has been set set_session(sess) model = load_model(...)
然后在每个请求中(即在每个线程中):
global sess global graph with graph.as_default(): set_session(sess) model.predict(...)
为我工作,谢谢!!
最有用的评论
我在 tensorflow 1.13.1 中遇到了同样的问题,我通过创建对用于加载模型的会话的引用,然后将其设置为在每个请求中由 keras 使用来解决。 即我做了以下事情:
然后在每个请求中(即在每个线程中):