ìì€í ì 볎
í겜 캡ì²ë¥Œ ì¬ì©íì¬ ìŽ ì 볎 ì€ ìŒë¶ë¥Œ ìì§í ì ììµëë€.
python -c "í
ìíë¡ë¥Œ tfë¡ ê°ì žì€êž°; print(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/kernelì ìœë ëì ì€ë¥ê° ë°ìíìµëë€: localhost. ìŽë ë³ìê° ìŽêž°íëì§ ìììì ì믞í ì ììµëë€. ì°Ÿì ì ìì: 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ë ì£Œë¡ ì€ì¹ ë° ì±ë¥ ë²ê·žë¥Œ íŽê²°íêž° ìí ê²ì ëë€. ê°ì¬ íŽì!
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
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(...)
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
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(...)
ì§ì§ ëëšíë°!!!!! ìŽê²ìŽ ìµê³ ì ì룚ì ì ëë€. ìžì ì ì¶ê°í ì§íì ìëí ìŽì 륌 ë§ìíŽ ì£Œìê² ìµëê¹?
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
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 ê·žëíì ìžì ìŽ ì€ë ëë¡ë¶í° ìì íì§ ìë€ë ê²ì ëë€. ë°ëŒì Ʞ볞ì ìŒë¡ ì ìžì (ìŽì ì ë¡ëë ê°ì€ì¹, 몚ëžë í¬íšíì§ ìì)ì ê° ì€ë ë, ìŠ ê° ìì²ì ëíŽ ìì±ë©ëë€. 몚ë 몚ëžì í¬íšíë ì ì ìžì ì ì ì¥íê³ ê° ì€ë ëì kerasìì ì¬ì©íëë¡ ì€ì íë©Ž 묞ì ê° íŽê²°ë©ëë€.
íŽê²°ëë ê²ìŒë¡ ìŽíŽíë¯ë¡ ë«ìµëë€ë§, ì ê° ì못 ìê³ ìë ê²œì° ìë €ì£Œìêž° ë°ëëë€. ê°ì¬ íŽì!
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
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 ê·žëíì ìžì ìŽ ì€ë ëë¡ë¶í° ìì íì§ ìë€ë ê²ì ëë€. ë°ëŒì Ʞ볞ì ìŒë¡ ì ìžì (ìŽì ì ë¡ëë ê°ì€ì¹, 몚ëžë í¬íšíì§ ìì)ì ê° ì€ë ë, ìŠ ê° ìì²ì ëíŽ ìì±ë©ëë€. 몚ë 몚ëžì í¬íšíë ì ì ìžì ì ì ì¥íê³ ê° ì€ë ëì kerasìì ì¬ì©íëë¡ ì€ì íë©Ž 묞ì ê° íŽê²°ë©ëë€.
í ì íëŠ ë²ì 1.13.1곌 ëìŒí 묞ì ê° ììµëë€. ìì ì룚ì ìŽ ì ìê² íšê³Œì ì ëë€.
ëë ê°ì 묞ì 륌 ê²ªê³ ììŒë©° some_custom_configì ê°ìŽ 묎ììžì§ ê¶êží©ëë€.
ëë ê°ì 묞ì 륌 ê²ªê³ ììŒë©° some_custom_configì ê°ìŽ 묎ììžì§ ê¶êží©ëë€.
ìžì ì 구ì±íë €ë 겜ì°(ëŽê° ìííŽìŒ íš) ìŽ ë§€ê°ë³ìì 구ì±ì ì ë¬í ì ììµëë€. ê·žë ì§ ììŒë©Ž ê·žë¥ ë¡ëë€.
ëë ê°ì 묞ì 륌 ê²ªê³ ììŒë©° some_custom_configì ê°ìŽ 묎ììžì§ ê¶êží©ëë€.
ìžì ì 구ì±íë €ë 겜ì°(ëŽê° ìííŽìŒ íš) ìŽ ë§€ê°ë³ìì 구ì±ì ì ë¬í ì ììµëë€. ê·žë ì§ ììŒë©Ž ê·žë¥ ë¡ëë€.
ì ë§ ê³ ë§ìµëë€! 몚ë ê²ìŽ ì§êž ì벜íê² ì€íëê³ ììµëë€.
ìœë륌 ì ê³µíŽ ì£Œì ì ê°ì¬í©ëë€. Keraìì BERT륌 ì€ííë ëì ë¹ì·í ì€ë¥ ë©ìì§ê° ëíë¬ìµëë€. ê·íì ì룚ì ì ìëíì§ë§ ìëíì§ ìë ê² ê°ìµëë€. 몚ë ì§ì¹šì 죌ìë©Ž ê°ì¬íê² ìµëë€!
```FailedPreconditionError Traceback(ê°ì¥ ìµê·Œ ížì¶ ë§ì§ë§)
11 validation_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 ret = tf_session.TF_SessionRunCallable(self._session._session,
1457 self._handle, ìžì,
-> 1458 run_metadata_ptr)
1459 if run_metadata:
1460 (죌)ëì±
FailedPreconditionError: 컚í
ìŽë: localhostìì 늬ìì€ ë³ì bert_layer_9_module/bert/encoder/layer_3/output/LayerNorm/gamma륌 ìœë ëì ì€ë¥ê° ë°ìíìµëë€. ìŽë ë³ìê° ìŽêž°íëì§ ìììì ì믞í ì ììµëë€. ì°Ÿì ì ìì: 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) ì€íší ì ì 조걎: 컚í ìŽë: 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) ì€íší ì ì 조걎: 컚í ìŽë: 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 íì ì€ë¥ê° 묎ìëììµëë€.
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
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 ê·žëíì ìžì ìŽ ì€ë ëë¡ë¶í° ìì íì§ ìë€ë ê²ì ëë€. ë°ëŒì Ʞ볞ì ìŒë¡ ì ìžì (ìŽì ì ë¡ëë ê°ì€ì¹, 몚ëžë í¬íšíì§ ìì)ì ê° ì€ë ë, ìŠ ê° ìì²ì ëíŽ ìì±ë©ëë€. 몚ë 몚ëžì í¬íšíë ì ì ìžì ì ì ì¥íê³ ê° ì€ë ëì 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)
ì¬êž°ì ì°žì íšì ì¬ë¬ 몚ëžì ë¡ë(í ë²)íê³ ì¬ë¬ ì€ë ëìì ì¬ì©í ì ìë€ë ê²ì
ëë€.
Ʞ볞ì ìŒë¡ "default" Session
ë° "default" Graph
ë 몚ëžì ë¡ëíë ëì ì¬ì©ë©ëë€.
ê·žë¬ë ì¬êž°ìì ìë¡ìŽ ê²ì ë§ëëë€.
ëí Graph
ë Session
ê°ì²Žì ì ì¥ëìŽ ì¢ ë ížëŠ¬í©ëë€.
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
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 ê·žëíì ìžì ìŽ ì€ë ëë¡ë¶í° ìì íì§ ìë€ë ê²ì ëë€. ë°ëŒì Ʞ볞ì ìŒë¡ ì ìžì (ìŽì ì ë¡ëë ê°ì€ì¹, 몚ëžë í¬íšíì§ ìì)ì ê° ì€ë ë, ìŠ ê° ìì²ì ëíŽ ìì±ë©ëë€. 몚ë 몚ëžì í¬íšíë ì ì ìžì ì ì ì¥íê³ ê° ì€ë ëì 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)
ì¬êž°ì ì°žì íšì ì¬ë¬ 몚ëžì ë¡ë(í ë²)íê³ ì¬ë¬ ì€ë ëìì ì¬ì©í ì ìë€ë ê²ì ëë€.
Ʞ볞ì ìŒë¡ "default"Session
ë° "default"Graph
ë 몚ëžì ë¡ëíë ëì ì¬ì©ë©ëë€.
ê·žë¬ë ì¬êž°ìì ìë¡ìŽ ê²ì ë§ëëë€.
ëíGraph
ëSession
ê°ì²Žì ì ì¥ëìŽ ì¢ ë ížëŠ¬í©ëë€.
ìŽ ëµë³ì 죌ì
ì ê°ì¬í©ëë€
íëŒì€í¬ì ë©í° ì€ë ë©ì ì¬ì©í ëëìŽ ë¬žì ì ì§ë©Žíê³ ììµëë€. íšê³Œì ìŽììµëë€.
ê°ì¬í©ëë€:ì€ë§ìŒëŠ¬:
ìì€í ì 볎
- ì¬ì©ì ì§ì ìœë륌 ìì±íìµëê¹(TensorFlowìì ì ê³µëë Ʞ볞 ìì ì€í¬ëŠœíž ì¬ì©ê³Œ ë°ë): ì, ì¬êž°ìì ì°Ÿì ì ììµëë€(https://github.com/viaboxxsystems/deeplearning-showcase/blob/tensorflow_2.0/flaskApp.py).
- OS íë«íŒ ë° ë°°í¬(ì: Linux Ubuntu 16.04): MAC OSX 10.14.4
- TensorFlow ë²ì (ìë ëª ë ¹ ì¬ì©): 2.0.0-alpha0
- Python ë²ì : Python 3.6.5
í겜 캡ì²ë¥Œ ì¬ì©íì¬ ìŽ ì 볎 ì€ ìŒë¶ë¥Œ ìì§í ì ììµëë€.
python -c "í ìíë¡ë¥Œ tfë¡ ê°ì žì€êž°; print(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/kernelì ìœë ëì ì€ë¥ê° ë°ìíìµëë€: localhost. ìŽë ë³ìê° ìŽêž°íëì§ ìììì ì믞í ì ììµëë€. ì°Ÿì ì ìì: 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. ìŽë ë³ìê° ìŽêž°íëì§ ìììì ì믞í ì ììµëë€. ì°Ÿì ì ìì: localhost/dense_6/kernel/class tensorflow::Var 늬ìì€ê° ììµëë€.
[[{{ë
žë ë°ë_6/MatMul/ReadVariableOp}}]]
ì£ì¡í©ëë€. ì ë ìŽ ë¬žì ì ì§ë©ŽíŽ ììµëë€. ê·žë¬ë ê·íì ëµë³ìŒë¡ ëŽ ë¬žì ê° íŽê²°ëì§ ìì ì ììµëë€. ìë§ë ë€ë¥ž ì¡°ê±ŽìŒ ì ììµëë€. ëŽ ë¬žì ë kerasìì VGG16ì ì¬ì©íê³ iterate êž°ë¥ì ì¬ì©íê³ ì¶ì ëì
ëë€.
loss_value, grads_value = iterate([np.zeros((1, 150, 150, 3))])
ê·žë¬ë ìŽì ì ì¬í ì§ë¬žìŽ ë°ìíìµëë€.
FailedPreconditionError: 컚í
ìŽë: localhostìì ìì ë³ì block1_conv1_12/bias륌 ìœë ëì ì€ë¥ê° ë°ìíìµëë€. ì°Ÿì ì ìì: localhost/block1_conv1_12/bias/N10tensorflow3VarE 늬ìì€ê° ì¡Žì¬íì§ ììµëë€.[[{{ë
žë ëžë¡1_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))])
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
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 ê·žëíì ìžì ìŽ ì€ë ëë¡ë¶í° ìì íì§ ìë€ë ê²ì ëë€. ë°ëŒì Ʞ볞ì ìŒë¡ ì ìžì (ìŽì ì ë¡ëë ê°ì€ì¹, 몚ëžë í¬íšíì§ ìì)ì ê° ì€ë ë, ìŠ ê° ìì²ì ëíŽ ìì±ë©ëë€. 몚ë 몚ëžì í¬íšíë ì ì ìžì ì ì ì¥íê³ ê° ì€ë ëì 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()
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
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(...)
ìŽê²ì ë륌 ìíŽ ìŒíìµëë€. ê°ì¬í©ëë€.
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
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 ì¶ì (ê°ì¥ ìµê·Œ ížì¶ ë§ì§ë§)
4 learning_rate=config.LEARNING_RATE,
5 ìí¬í¬ = 4,
----> 6ê°ì ë ìŽìŽ = '뚞늬')
6 íë ì
/usr/local/lib/python3.6/dist-packages/mrcnn/model.py in train(self, train_dataset, val_dataset, learning_rate, epochs, layer, Augmentation)
2350 max_queue_size=100,
2351ëª
ì ë
žëì=ë
žëì,
-> 2352 use_multiprocessing=ì°ž,
2353 )
2354 (죌)ìŽììš
/usr/local/lib/python3.6/dist-packages/keras/legacy/interfaces.py ëíŒ( ìžì, * kwargs)
89 warnings.warn(' ' + object_name + '
ížì¶ì ' +
90 'Keras 2 API: ' + ìëª
, ì€í ìì€=2)
---> 91 return func( args, * kwargs)
92í
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 @interfaces.legacy_generator_methods_support
/usr/local/lib/python3.6/dist-packages/keras/engine/training_generator.py in fit_generator(model, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size,workers, use_multiprocessing , ì
í, initial_epoch)
218í
219 íŽëì€_ìšìŽíž=íŽëì€_ìšìŽíž,
--> 220 reset_metrics=ê±°ì§)
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í
-> 1514 ì¶ë ¥ = self.train_function(ins)
1515
1516 ë§ìœ reset_metrics:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/backend.py __call__(ì첎, ì
ë ¥)
3630
3631 íì¹ = self._callable_fn(* array_vals,
-> 3632 run_metadata=self.run_metadata)
3633
3634 =
/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py __call__(self, args, * kwargs)
1470 ret = tf_session.TF_SessionRunCallable(self._session._session,
1471 ìêž°._ížë€, ìžì,
-> 1472 run_metadata_ptr)
1473 if run_metadata:
1474 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
FailedPreconditionError: 컚í
ìŽëìì 늬ìì€ ë³ì ìµì»€/ë³ì륌 ìœë ëì ì€ë¥ê° ë°ìíìµëë€: localhost. ìŽë ë³ìê° ìŽêž°íëì§ ìììì ì믞í ì ììµëë€. ì°Ÿì ì ìì: localhost/anchors/Variable/N10tensorflow3VarE 늬ìì€ê° ì¡Žì¬íì§ ììµëë€.
[[{{ë
žë ROI/ReadVariableOp}}]] ```
ëì죌ìžì!!!
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
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 ê·žëíì ìžì ìŽ ì€ë ëë¡ë¶í° ìì íì§ ìë€ë ê²ì ëë€. ë°ëŒì Ʞ볞ì ìŒë¡ ì ìžì (ìŽì ì ë¡ëë ê°ì€ì¹, 몚ëžë í¬íšíì§ ìì)ì ê° ì€ë ë, ìŠ ê° ìì²ì ëíŽ ìì±ë©ëë€. 몚ë 몚ëžì í¬íšíë ì ì ìžì ì ì ì¥íê³ ê° ì€ë ëì kerasìì ì¬ì©íëë¡ ì€ì íë©Ž 묞ì ê° íŽê²°ë©ëë€.
Plsë ì ìëì§ ìì some_custom_config륌 íìí©ëë€.
Plsë ì ìëì§ ìì some_custom_config륌 íìí©ëë€.
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
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(...)
ì 륌 ìí ìŒì ëë€, ê°ì¬í©ëë€!!
ê°ì¥ ì ì©í ëêž
몚ëžì ë¡ëíë ë° ì¬ì©ëë ìžì ì ëí 찞조륌 ë§ë ë€ì ê° ìì²ìì kerasê° ì¬ì©íëë¡ ì€ì íì¬ íŽê²°í tensorflow 1.13.1ìì ëìŒí 묞ì ê° ìììµëë€. ìŠ, ëë ë€ìì ìííìµëë€.
ê·žë° ë€ì ê° ìì²ìì(ìŠ, ê° ì€ë ëìì):