Tensorflow: Saat Runtime: "Kesalahan saat membaca variabel sumber daya softmax/kernel dari Wadah: localhost"

Dibuat pada 30 Apr 2019  ·  26Komentar  ·  Sumber: tensorflow/tensorflow

Sistem Informasi

  • Sudahkah saya menulis kode khusus (sebagai lawan menggunakan skrip contoh stok yang disediakan di TensorFlow): ya, ditemukan di sini (https://github.com/viaboxxsystems/deeplearning-showcase/blob/tensorflow_2.0/flaskApp.py)
  • Platform dan Distribusi OS (misalnya, Linux Ubuntu 16.04): MAC OSX 10.14.4
  • Versi TensorFlow (gunakan perintah di bawah): 2.0.0-alpha0
  • Versi Python: Python 3.6.5

Anda dapat mengumpulkan beberapa informasi ini menggunakan tangkapan lingkungan kami
python -c "import tensorflow sebagai tf; print(tf.version.GIT_VERSION, tf.version.VERSION)"
v1.12.0-9492-g2c319fb415 2.0.0-alpha0

Jelaskan perilaku saat ini
saat menjalankan "flaskApp.py", Setelah memuat model dan mencoba mengklasifikasikan gambar menggunakan "predict", gagal dengan kesalahan:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Kesalahan saat membaca variabel sumber daya softmax/kernel dari Wadah: localhost. Ini bisa berarti bahwa variabel itu tidak diinisialisasi. Tidak ditemukan: Sumber daya localhost/softmax/kernel/N10tensorflow3VarE tidak ada.

Jelaskan perilaku yang diharapkan
hasil klasifikasi gambar harus dikembalikan.

Kode untuk mereproduksi masalah
Langkah-langkah untuk mereproduksi:

  • git clone https://github.com/viaboxxsystems/deeplearning-showcase.git
  • git checkout tensorflow_2.0
  • (jika diperlukan) pip3 install -r requirements.txt
  • export FLASK_APP=flaskApp.py
  • mulai aplikasi dengan flask run
  • menggunakan Postman atau curl mengirim gambar anjing atau kucing ke aplikasi
    Screenshot 2019-04-30 at 16 10 57
    ATAU
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

Info / log lainnya

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}}]]
TF 2.0 ops awaiting response support

Komentar yang paling membantu

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

Semua 26 komentar

Ada pembaruan tentang ini?

Ini bukan masalah Build/Instalasi atau Bug/Kinerja. Silakan kirim pertanyaan dukungan semacam ini di Stackoverflow . Ada komunitas besar untuk mendukung dan belajar dari pertanyaan Anda. GitHub terutama untuk mengatasi bug dalam instalasi dan kinerja. Terima kasih!

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

Anda luar biasa!!!!! Ini adalah solusi terbaik. Bisakah Anda memberi tahu saya mengapa itu berhasil setelah menambahkan sesi?

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

Anda luar biasa!!!!! Ini adalah solusi terbaik. Bisakah Anda memberi tahu saya mengapa itu berhasil setelah menambahkan sesi?

Terima kasih dan selamat datang :).

Sejauh yang saya mengerti, masalahnya adalah bahwa grafik dan sesi tensorflow tidak aman untuk thread. Jadi secara default sesi baru (yang tidak berisi bobot yang dimuat sebelumnya, model juga) dibuat untuk setiap utas, yaitu untuk setiap permintaan. Dengan menyimpan sesi global yang berisi semua model Anda dan mengaturnya untuk digunakan dengan keras di setiap utas, masalahnya terpecahkan.

Menutup ini karena saya memahaminya untuk diselesaikan, tetapi tolong beri tahu saya jika saya salah. Terima kasih!

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

Anda luar biasa!!!!! Ini adalah solusi terbaik. Bisakah Anda memberi tahu saya mengapa itu berhasil setelah menambahkan sesi?

Terima kasih dan selamat datang :).

Sejauh yang saya mengerti, masalahnya adalah bahwa grafik dan sesi tensorflow tidak aman untuk thread. Jadi secara default sesi baru (yang tidak berisi bobot yang dimuat sebelumnya, model juga) dibuat untuk setiap utas, yaitu untuk setiap permintaan. Dengan menyimpan sesi global yang berisi semua model Anda dan mengaturnya untuk digunakan dengan keras di setiap utas, masalahnya terpecahkan.

Saya memiliki masalah yang sama dengan aliran tensor versi 1.13.1, solusi di atas berfungsi untuk saya.

Saya mengalami masalah yang sama dan bertanya-tanya apa nilai some_custom_config itu?

Saya mengalami masalah yang sama dan bertanya-tanya apa nilai some_custom_config itu?

Jika Anda ingin mengonfigurasi sesi Anda (yang harus saya lakukan), Anda dapat meneruskan konfigurasi di parameter ini. Lain biarkan saja.

Saya mengalami masalah yang sama dan bertanya-tanya apa nilai some_custom_config itu?

Jika Anda ingin mengonfigurasi sesi Anda (yang harus saya lakukan), Anda dapat meneruskan konfigurasi di parameter ini. Lain biarkan saja.

Terima kasih banyak! Semuanya berjalan sempurna sekarang.

Terima kasih telah memberikan kode. Saya mengalami pesan kesalahan serupa saat menjalankan BERT di Kera. Saya mencoba solusi Anda tetapi sepertinya tidak berhasil. Bimbingan apa pun sangat dihargai!

```FailedPreconditionError Traceback (panggilan terakhir terakhir)
di dalam()
11 validasi_data=([test_input_ids, test_input_masks, test_segment_ids], test_labels),
12 zaman=1,
---> 13 batch_size = 32
14 )

3 bingkai
/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py di __call__(self, args, * kwargs)
1456 ret = tf_session.TF_SessionRunCallable(self._session._session,
1457 self._handle, args,
-> 1458 run_metadata_ptr)
1459 jika run_metadata:
1460 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

FailedPreconditionError: Kesalahan saat membaca variabel sumber daya bert_layer_9_module/bert/encoder/layer_3/output/LayerNorm/gamma dari Container: localhost. Ini bisa berarti bahwa variabel itu tidak diinisialisasi. Tidak ditemukan: Sumber daya localhost/bert_layer_9_module/bert/encoder/layer_3/output/LayerNorm/gamma/N10tensorflow3VarE tidak ada.
[[{{node bert_layer_9/bert_layer_9_module_apply_tokens/bert/encoder/layer_3/output/LayerNorm/batchnorm/mul/ReadVariableOp}}]]```

Saya memiliki kesalahan serupa saat menggunakan penyematan Elmo dari tf-hub di dalam lapisan keras khusus.

tensorflow.python.framework.errors_impl.FailedPreconditionError: 2 root error ditemukan.
(0) Prasyarat gagal: Kesalahan saat membaca variabel sumber daya ElmoEbeddingLayer_module/bilm/CNN_high_0/b_carry dari Container: localhost. Ini bisa berarti bahwa variabel itu tidak diinisialisasi. Tidak ditemukan: Resource localhost/ElmoEbeddingLayer_module/bilm/CNN_high_0/b_carry/class tensorflow::Var tidak ada.
[[{{node ElmoEbeddingLayer/ElmoEbeddingLayer_module_apply_default/bilm/add/ReadVariableOp}}]]
(1) Prasyarat gagal: Kesalahan saat membaca variabel sumber daya ElmoEbeddingLayer_module/bilm/CNN_high_0/b_carry dari Container: localhost. Ini bisa berarti bahwa variabel itu tidak diinisialisasi. Tidak ditemukan: Resource localhost/ElmoEbeddingLayer_module/bilm/CNN_high_0/b_carry/class tensorflow::Var tidak ada.
[[{{node ElmoEbeddingLayer/ElmoEbeddingLayer_module_apply_default/bilm/add/ReadVariableOp}}]]
[[metrik/acc/Identity/_199]]
0 operasi yang berhasil.
0 kesalahan turunan diabaikan.

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

Anda luar biasa!!!!! Ini adalah solusi terbaik. Bisakah Anda memberi tahu saya mengapa itu berhasil setelah menambahkan sesi?

Terima kasih dan selamat datang :).

Sejauh yang saya mengerti, masalahnya adalah bahwa grafik dan sesi tensorflow tidak aman untuk thread. Jadi secara default sesi baru (yang tidak berisi bobot yang dimuat sebelumnya, model juga) dibuat untuk setiap utas, yaitu untuk setiap permintaan. Dengan menyimpan sesi global yang berisi semua model Anda dan mengaturnya untuk digunakan dengan keras di setiap utas, masalahnya terpecahkan.

Terima kasih banyak untuk ini.

Dalam kasus saya, saya melakukannya sedikit berbeda, kalau-kalau itu membantu siapa pun:

# 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)

Kebaruan di sini memungkinkan beberapa model dimuat (sekali) dan digunakan di banyak utas.
Secara default, "default" Session dan "default" Graph digunakan saat memuat model.
Tapi di sini Anda membuat yang baru.
Perhatikan juga bahwa Graph disimpan di objek Session , yang sedikit lebih nyaman.

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

Anda luar biasa!!!!! Ini adalah solusi terbaik. Bisakah Anda memberi tahu saya mengapa itu berhasil setelah menambahkan sesi?

Terima kasih dan selamat datang :).
Sejauh yang saya mengerti, masalahnya adalah bahwa grafik dan sesi tensorflow tidak aman untuk thread. Jadi secara default sesi baru (yang tidak berisi bobot yang dimuat sebelumnya, model juga) dibuat untuk setiap utas, yaitu untuk setiap permintaan. Dengan menyimpan sesi global yang berisi semua model Anda dan mengaturnya untuk digunakan dengan keras di setiap utas, masalahnya terpecahkan.

Terima kasih banyak untuk ini.

Dalam kasus saya, saya melakukannya sedikit berbeda, kalau-kalau itu membantu siapa pun:

# 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)

Kebaruan di sini memungkinkan beberapa model dimuat (sekali) dan digunakan di banyak utas.
Secara default, "default" Session dan "default" Graph digunakan saat memuat model.
Tapi di sini Anda membuat yang baru.
Perhatikan juga bahwa Graph disimpan di objek Session , yang sedikit lebih nyaman.

Terima kasih atas jawaban ini
Saya juga menghadapi masalah ini saat menggunakan labu dan multithreading, @eliadl Solusi Anda berhasil untuk saya.

terima kasih :smiley:

Sistem Informasi

  • Sudahkah saya menulis kode khusus (sebagai lawan menggunakan skrip contoh stok yang disediakan di TensorFlow): ya, ditemukan di sini (https://github.com/viaboxxsystems/deeplearning-showcase/blob/tensorflow_2.0/flaskApp.py)
  • Platform dan Distribusi OS (misalnya, Linux Ubuntu 16.04): MAC OSX 10.14.4
  • Versi TensorFlow (gunakan perintah di bawah): 2.0.0-alpha0
  • Versi Python: Python 3.6.5

Anda dapat mengumpulkan beberapa informasi ini menggunakan tangkapan lingkungan kami
python -c "import tensorflow sebagai tf; print(tf.version.GIT_VERSION, tf.version.VERSION)"
v1.12.0-9492-g2c319fb415 2.0.0-alpha0

Jelaskan perilaku saat ini
saat menjalankan "flaskApp.py", Setelah memuat model dan mencoba mengklasifikasikan gambar menggunakan "predict", gagal dengan kesalahan:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Kesalahan saat membaca variabel sumber daya softmax/kernel dari Wadah: localhost. Ini bisa berarti bahwa variabel itu tidak diinisialisasi. Tidak ditemukan: Sumber daya localhost/softmax/kernel/N10tensorflow3VarE tidak ada.

Jelaskan perilaku yang diharapkan
hasil klasifikasi gambar harus dikembalikan.

Kode untuk mereproduksi masalah
Langkah-langkah untuk mereproduksi:

  • git clone https://github.com/viaboxxsystems/deeplearning-showcase.git
  • git checkout tensorflow_2.0
  • (jika diperlukan) pip3 install -r requirements.txt
  • export FLASK_APP=flaskApp.py
  • mulai aplikasi dengan flask run
  • menggunakan Postman atau curl mengirim gambar anjing atau kucing ke aplikasi
    Screenshot 2019-04-30 at 16 10 57
    ATAU
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

Info / log lainnya

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}}]]

Saya juga menghadapi masalah ini
tensorflow.python.framework.errors_impl.FailedPreconditionError: Kesalahan saat membaca variabel sumber daya density_6/kernel dari Container: localhost. Ini bisa berarti bahwa variabel itu tidak diinisialisasi. Tidak ditemukan: Sumber daya localhost/dense_6/kernel/class tensorflow::Var tidak ada.
[[{{node padat_6/MatMul/ReadVariableOp}}]]

maaf, saya juga menghadapi masalah ini. Tetapi jawaban Anda tidak menyelesaikan masalah saya mungkin dalam kondisi yang berbeda. Dalam masalah saya, ketika saya menggunakan VGG16 dengan keras dan saya ingin menggunakan fungsi iterate
loss_value, grads_value = iterate([np.zeros((1, 150, 150, 3))])
Tapi pertanyaan serupa ini terjadi.
FailedPreconditionError: Kesalahan saat membaca variabel sumber daya block1_conv1_12/bias dari Container: localhost. Tidak ditemukan: Sumber daya localhost/block1_conv1_12/bias/N10tensorflow3VarE tidak ada.[[{{node block1_conv1_12/BiasAdd/ReadVariableOp}}]]
Di https://github.com/JarvisUSTC/deep-learning-with-python-notebooks/blob/master/5.4-visualizing-what-convnets-learn.ipynb , masalahnya tidak ditemukan.
image

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))])

image

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

Anda luar biasa!!!!! Ini adalah solusi terbaik. Bisakah Anda memberi tahu saya mengapa itu berhasil setelah menambahkan sesi?

Terima kasih dan selamat datang :).
Sejauh yang saya mengerti, masalahnya adalah bahwa grafik dan sesi tensorflow tidak aman untuk thread. Jadi secara default sesi baru (yang tidak berisi bobot yang dimuat sebelumnya, model juga) dibuat untuk setiap utas, yaitu untuk setiap permintaan. Dengan menyimpan sesi global yang berisi semua model Anda dan mengaturnya untuk digunakan dengan keras di setiap utas, masalahnya terpecahkan.

Saya memiliki masalah yang sama dengan aliran tensor versi 1.13.1, solusi di atas berfungsi untuk saya.

Solusi ini bekerja untuk saya juga .. Terima kasih @eliadl

Di TF 2.x, tidak ada sesi(). Bagaimana saya memperbaikinya? masalah yang sama terjadi pada kode TF 2.x saya.

@SungmanHong alih-alih tf.Session coba gunakan tf.compat.v1.Session .

Di TF 2.x, tidak ada sesi(). Bagaimana saya memperbaikinya? masalah yang sama terjadi pada kode TF 2.x saya.

sesi impor di TF 2.X
tf.compat.v1.Session()
impor keras.backend.get_session di TF 2.X
tf.compat.v1.keras.backend.get_session()

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

Ini berhasil untuk saya, terima kasih

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

Man Anda jenius dan luar biasa, Anda baru saja menyelamatkan proyek saya, Terima kasih banyak

Di TF 2.x, tidak ada sesi(). Bagaimana saya memperbaikinya? masalah yang sama terjadi pada kode TF 2.x saya.

sesi impor di TF 2.X
tf.compat.v1.Session()
impor keras.backend.get_session di TF 2.X
tf.compat.v1.keras.backend.get_session()

Saya telah menggunakan solusi yang diberikan tetapi masih tidak berhasil untuk saya, saya mendapatkan kesalahan

`` 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=Benar and multiple workers may duplicate your data. Please consider using the keras.utils.Kelas urutan.
UserWarning('Menggunakan generator dengan use_multiprocessing=True '

Zaman 1/4

FailedPreconditionError Traceback (panggilan terakhir terakhir)
di dalam()
4 learning_rate=config.LEARNING_RATE,
5 zaman = 4,
----> 6 lapisan = 'kepala')

6 bingkai
/usr/local/lib/python3.6/dist-packages/mrcnn/model.py di train(self, train_dataset, val_dataset, learning_rate, epoch, layer, augmentation)
2350 max_queue_size=100,
2351 pekerja = pekerja,
-> 2352 use_multiprocessing=Benar,
2353 )
2354 self.epoch = max(self.epoch, epoch)

/usr/local/lib/python3.6/dist-packages/keras/legacy/interfaces.py dalam pembungkus ( args, * kwargs)
89 warnings.warn('Perbarui panggilan ' + object_name + ' ke ' +
90 'Keras 2: API: ' + tanda tangan, stacklevel=2)
---> 91 fungsi pengembalian( args, * kwargs)
92 pembungkus._original_function = func
93 pembungkus kembali

/usr/local/lib/python3.6/dist-packages/keras/engine/training.py di fit_generator(self, generator, steps_per_epoch, epochs, verbose, callback, validasi_data, validasi_langkah, validasi_freq, class_weight, max_queue_size, pekerja, use_multiprocessing , acak, initial_epoch)
1730 use_multiprocessing=penggunaan_multiprosesor,
1731 acak = acak,
-> 1732 initial_Epoch=initial_Epoch)
1733
1734 @interfaces.legacy_generator_methods_support

/usr/local/lib/python3.6/dist-packages/keras/engine/training_generator.py di fit_generator(model, generator, langkah_per_epoch, zaman, verbose, panggilan balik, validasi_data, validasi_langkah, validasi_freq, kelas_berat, max_queue_size, pekerja, use_multiprocessing , shuffle, initial_epoch)
218 sampel_berat = sampel_berat,
219 kelas_berat=kelas_berat,
-> 220 reset_metrics=Salah)
221
222 out = to_list(out)

/usr/local/lib/python3.6/dist-packages/keras/engine/training.py di train_on_batch(self, x, y, sample_weight, class_weight, reset_metrics)
1512 in = x + y + sample_weights
1513 diri._make_train_function()
-> 1514 keluaran = self.train_function(in)
1515
1516 jika reset_metrics:

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/backend.py di __call__(self, inputs)
3630
3631 diambil = self._callable_fn(*array_vals,
-> 3632 run_metadata=self.run_metadata)
3633 self._call_fetch_callbacks(fetched[-len(self._fetches):])
3634 output_structure = nest.pack_sequence_as(

/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py di __call__(self, args, * kwargs)
1470 ret = tf_session.TF_SessionRunCallable(self._session._session,
1471 self._handle, args,
-> 1472 run_metadata_ptr)
1473 jika run_metadata:
1474 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

FailedPreconditionError: Kesalahan saat membaca jangkar variabel sumber daya/Variabel dari Kontainer: localhost. Ini bisa berarti bahwa variabel itu tidak diinisialisasi. Tidak ditemukan: Sumber daya localhost/jangkar/Variabel/N10tensorflow3VarE tidak ada.
[[{{node ROI/ReadVariableOp}}]] ```

TOLONG BANTU!!!

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

Anda luar biasa!!!!! Ini adalah solusi terbaik. Bisakah Anda memberi tahu saya mengapa itu berhasil setelah menambahkan sesi?

Terima kasih dan selamat datang :).

Sejauh yang saya mengerti, masalahnya adalah bahwa grafik dan sesi tensorflow tidak aman untuk thread. Jadi secara default sesi baru (yang tidak berisi bobot yang dimuat sebelumnya, model juga) dibuat untuk setiap utas, yaitu untuk setiap permintaan. Dengan menyimpan sesi global yang berisi semua model Anda dan mengaturnya untuk digunakan dengan keras di setiap utas, masalahnya terpecahkan.

Tolong itu menunjukkan some_custom_config tidak ditentukan

Tolong itu menunjukkan some_custom_config tidak ditentukan

Saya memiliki masalah yang sama di tensorflow 1.13.1 yang telah saya selesaikan dengan membuat referensi ke sesi yang digunakan untuk memuat model dan kemudian mengaturnya untuk digunakan dengan keras di setiap permintaan. Yaitu saya telah melakukan hal berikut:

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(...)

dan kemudian di setiap permintaan (yaitu di setiap utas):

global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

bekerja untuk saya, terima kasih!!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat