Genel sorunlar

Sorununuz burada listelenmiyorsa lütfen yeni bir sorun doldurmadan önce github sorunlarını arayın.

TypeError: 'AutoTrackable' nesnesi çağrılabilir değil

# BAD: Raises error
embed = hub.load('https://tfhub.dev/google/nnlm-en-dim128/1')
embed(['my text', 'batch'])

Bu hata sıklıkla TF2'deki hub.load() API'si ile TF1 Hub formatındaki modeller yüklenirken ortaya çıkar. Doğru imzanın eklenmesi bu sorunu çözecektir. TF2'ye geçiş ve TF1 Hub formatındaki modellerin TF2'de kullanımı hakkında daha fazla ayrıntı için TF2 için TF-Hub geçiş kılavuzuna bakın.


embed = hub.load('https://tfhub.dev/google/nnlm-en-dim128/1')
embed.signatures['default'](['my text', 'batch'])

Modül indirilemiyor

Bir URL'den bir modül kullanma sürecinde, ağ yığınından dolayı ortaya çıkabilecek birçok hata vardır. Genellikle bu, kitaplıkla ilgili bir sorun değil, kodu çalıştıran makineye özgü bir sorundur. İşte yaygın olanların bir listesi:

  • "EOF, protokolü ihlal ederek oluştu" - Yüklü python sürümü, modülü barındıran sunucunun TLS gereksinimlerini desteklemiyorsa bu sorunun oluşması muhtemeldir. Python 2.7.5'in tfhub.dev alanındaki modülleri çözmede başarısız olduğu biliniyor. DÜZELTME : Lütfen daha yeni bir python sürümüne güncelleyin.

  • "tfhub.dev'in sertifikası doğrulanamıyor" - Bu sorunun, ağdaki bir şeyin dev gTLD gibi davranmaya çalışması durumunda ortaya çıkması muhtemeldir. .dev gTLD olarak kullanılmadan önce geliştiriciler ve çerçeveler bazen kodun test edilmesine yardımcı olmak için .dev adlarını kullanırdı. DÜZELTME: ".dev" etki alanında ad çözümlemesini engelleyen yazılımı tanımlayın ve yeniden yapılandırın.

  • /tmp/tfhub_modules (veya benzeri) önbellek dizinine yazma hataları: Bunun ne olduğu ve konumunun nasıl değiştirileceği hakkında bilgi için Önbellekleme bölümüne bakın.

Yukarıdaki hatalar ve düzeltmeler işe yaramazsa, yerel bir dosyaya manuel olarak açılması gereken tar sıkıştırılmış bir dosyayı indirmek için URL'ye ?tf-hub-format=compressed compressed ekleme protokolünü simüle ederek bir modülü manuel olarak indirmeyi deneyebilirsiniz. dosya. Daha sonra URL yerine yerel dosyanın yolu kullanılabilir. İşte hızlı bir örnek:

# Create a folder for the TF hub module.
$ mkdir /tmp/moduleA
# Download the module, and uncompress it to the destination folder. You might want to do this manually.
$ curl -L "https://tfhub.dev/google/universal-sentence-encoder/2?tf-hub-format=compressed" | tar -zxvC /tmp/moduleA
# Test to make sure it works.
$ python
> import tensorflow_hub as hub
> hub.Module("/tmp/moduleA")

Çıkarımı önceden başlatılmış bir modülde çalıştırma

Eğer giriş verisi üzerine bir modülü defalarca uygulayan bir Python programı yazıyorsanız aşağıdaki tarifleri uygulayabilirsiniz. (Not: Üretim hizmetlerinde isteklerin sunulması için TensorFlow Hizmetini veya diğer ölçeklenebilir, Python içermeyen çözümleri düşünün.)

Kullanım senaryosu modelinizin başlatma ve sonraki istekler (örneğin Django, Flask, özel HTTP sunucusu vb.) olduğunu varsayarak sunumu aşağıdaki gibi ayarlayabilirsiniz:

TF2 KaydedilenModeller

  • Başlatma bölümünde:
    • TF2.0 modelini yükleyin.
import tensorflow_hub as hub

embedding_fn = hub.load("https://tfhub.dev/google/universal-sentence-encoder/4")
  • İstek kısmında:
    • Çıkarımı çalıştırmak için gömme işlevini kullanın.
embedding_fn(["Hello world"])

Bu tf.function çağrısı performans için optimize edilmiştir, bkz . tf.function kılavuzu .

TF1 Hub modülleri

  • Başlatma bölümünde:
    • Grafiği bir yer tutucuyla (grafiğe giriş noktası) oluşturun.
    • Oturumu başlatın.
import tensorflow as tf
import tensorflow_hub as hub

# Create graph and finalize (finalizing optional but recommended).
g = tf.Graph()
with g.as_default():
  # We will be feeding 1D tensors of text into the graph.
  text_input = tf.placeholder(dtype=tf.string, shape=[None])
  embed = hub.Module("https://tfhub.dev/google/universal-sentence-encoder/2")
  embedded_text = embed(text_input)
  init_op = tf.group([tf.global_variables_initializer(), tf.tables_initializer()])
g.finalize()

# Create session and initialize.
session = tf.Session(graph=g)
session.run(init_op)
  • İstek kısmında:
    • Yer tutucu aracılığıyla grafiğe veri beslemek için oturumu kullanın.
result = session.run(embedded_text, feed_dict={text_input: ["Hello world"]})

Bir modelin türü değiştirilemiyor (örneğin, float32'den bfloat16'ya)

TensorFlow'un SavedModels'i (TF Hub'da veya başka bir yerde paylaşılır) sabit veri türleri üzerinde çalışan işlemleri içerir (genellikle sinir ağlarının ağırlıkları ve ara aktivasyonları için float32). Bunlar, SavedModel yüklenirken sonradan değiştirilemez (ancak model yayıncıları, farklı veri türlerine sahip farklı modeller yayınlamayı seçebilir).

Bir model sürümünü güncelleme

Model sürümlerinin dokümantasyon meta verileri güncellenebilir. Ancak sürümün varlıkları (model dosyaları) değiştirilemez. Model varlıklarını değiştirmek istiyorsanız modelin daha yeni bir sürümünü yayınlayabilirsiniz. Belgeleri, sürümler arasında nelerin değiştiğini açıklayan bir değişiklik günlüğüyle genişletmek iyi bir uygulamadır.