TensorFlow.js: Python SavedModel'i TensorFlow.js biçimine dönüştürme

1. Giriş

TensorFlow.js ile ilk adımlarınızı attınız, önceden hazırlanmış modellerimizi denediniz, hatta kendi modelinizi bile geliştirdiniz. Ancak Python'da bazı son teknoloji araştırmaların ortaya çıktığını gördünüz ve bu harika fikri ölçeklenebilir şekilde milyonlarca insan için gerçeğe dönüştürüp gerçekleştirmeyeceğinizi merak ediyorsunuz. Tanıdık geldi mi? Öyleyse bu CodeLab tam size göre!

TensorFlow.js ekibi, SavedModel biçimindeki modelleri bir komut satırı dönüştürücü aracılığıyla TensorFlow.js'ye dönüştürmek için kullanışlı bir araç geliştirdi. Böylece, bu modelleri web'in erişimi ve ölçeğiyle birlikte keyifle kullanabilirsiniz.

Neler öğreneceksiniz?

Bu kod laboratuvarında, Python tarafından oluşturulan SavedModel'i bir web tarayıcısında istemci tarafında yürütme için gerekli olan model.json biçimine bağlamak üzere TensorFlow.js komut satırı dönüştürücüsünü nasıl kullanacağınızı öğreneceksiniz.

Özellikle:

  • Basit bir Python ML modeli oluşturma ve bu modeli TensorFlow.js dönüştürücüsünün ihtiyaç duyduğu gerekli biçime kaydetme.
  • Python'dan dışa aktardığınız SavedModel'e TensorFlow.js dönüştürücüyü yükleme ve kullanma.
  • Dönüşümden elde edilen dosyaları alın ve JS web uygulamanızda kullanın.
  • Bir şeyler ters gittiğinde (tüm modeller dönüşüm sağlamayabilir) ne yapacağınızı ve hangi seçenekleriniz olduğunu öğrenin.

Yeni yayınlanan bazı araştırmaları alıp bu modeli tüm dünyadaki milyonlarca JS geliştiricisine sunabildiğinizi hayal edin. Belki de bu uygulamayı kendi eserinizde kendiniz kullanacaksınız ve karmaşık bağımlılıklar ya da ortam kurulumu gerekli olmadığından, dünyanın herhangi bir kişi web tarayıcısında çalıştığında bu deneyimi yaşayabilir. Bilgisayar korsanlığına hazır mısınız? Başlayın!

Elde ettiğiniz dönüşümleri bizimle paylaşın.

Python'dan en sevdiğiniz modellerden bazılarını dönüştürmek için bugün öğrendiklerimizi kullanabilirsiniz. Bunu başarılı bir şekilde başarabilir ve modelin çalışan bir demo web sitesini hazırlarsanız, #MadeWithTFJS hashtag'ini kullanarak bizi sosyal medyada etiketleyin. Projenizin TensorFlow blogumuzda, hatta ileride etkinlikleri göster ve anlatmasına katılma şansı yakalayın. Araştırmaların web'e taşındığını görmek ve daha çok sayıda kişinin bu modelleri bu harika örnekte olduğu gibi yenilikçi ve yaratıcı şekillerde kullanmasını sağlamak istiyoruz.

2. TensorFlow.js nedir?

1aee0ede85885520.png

TensorFlow.js, JavaScript'in mümkün olduğu her yerde çalıştırabilen açık kaynak bir makine öğrenimi kitaplığıdır. Python'da yazılmış orijinal TensorFlow kitaplığına dayanan bu geliştirici deneyimini ve JavaScript ekosistemi için API setini yeniden oluşturmayı amaçlar.

Nerede kullanılabilir?

JavaScript'in taşınabilirliği sayesinde artık 1 dilde yazabilir ve aşağıdaki platformların tümünde kolayca makine öğrenimi gerçekleştirebilirsiniz:

  • Normal JavaScript kullanan web tarayıcısında istemci tarafı
  • Node.js kullanan sunucu tarafı ve hatta Raspberry Pi gibi IoT cihazları
  • Electron kullanan masaüstü uygulamaları
  • React Native kullanan yerel mobil uygulamalar

TensorFlow.js bu ortamların her birinde de birden çok arka ucu destekler (örneğin, CPU veya WebGL gibi çalıştırabildiği donanım tabanlı gerçek ortamlar). Bir "arka uç" (bu bağlamda sunucu tarafı ortamı anlamına gelmez. Yürütme için arka ucu, örneğin WebGL'de istemci tarafı olabilir) uyumluluğu sağlamak ve aynı zamanda çalışmaya hızlı devam etmesini sağlamak için de kullanılmalıdır. TensorFlow.js şu anda aşağıdakileri desteklemektedir:

  • Cihazın grafik kartında WebGL'nin çalıştırılması (GPU): Bu, GPU hızlandırmalı olarak daha büyük modelleri (3 MB'ın üzerinde) yürütmenin en hızlı yoludur.
  • CPU'da Web Derlemesi (WASM) yürütme: Örneğin, eski nesil cep telefonları da dahil olmak üzere tüm cihazlarda CPU performansını iyileştirir. Bu, bir grafik işlemciye içerik yüklemenin ek yükü nedeniyle WASM ile CPU'da WebGL'ye göre daha hızlı çalışabilen daha küçük (boyutu 3 MB'tan küçük) daha küçük modeller için daha uygundur.
  • CPU yürütme: Yedek, diğer ortamların hiçbirinin mevcut olmamasıdır. Bu üçünden en yavaş olanıdır ama her zaman yanınızdadır.

Not: Hangi cihazda çalışacağınızı biliyorsanız bu arka uçlardan birini zorunlu kılmayı seçebilir veya bunu belirtmezseniz TensorFlow.js'nin sizin yerinize karar vermesine izin verebilirsiniz.

İstemci tarafının süper güçleri

İstemci makinedeki web tarayıcısında TensorFlow.js çalıştırmak, dikkate değer birçok avantaj sağlayabilir.

Gizlilik

3. taraf web sunucusuna hiç veri göndermeden istemci makinesinde verileri hem eğitebilir hem de sınıflandırabilirsiniz. Bunun, örneğin GDPR gibi yerel yasalara uymanın gerekli olduğu veya kullanıcının makinesinde tutmak isteyebileceği ve üçüncü bir tarafa göndermeyeceği herhangi bir veriyi işlerken zorunlu olabileceği zamanlar olabilir.

Hız

Uzak sunucuya veri göndermek zorunda olmadığınızdan çıkarım (verileri sınıflandırma işlemi) daha hızlı olabilir. Daha da iyisi, kullanıcı erişim izni verirse kamera, mikrofon, GPS, ivme ölçer ve benzeri cihaz sensörlerine doğrudan erişebilirsiniz.

Erişim ve ölçeklendirme

Dünyadaki herkes tek bir tıklamayla kendisine gönderdiğiniz bir bağlantıyı tıklayabilir, web sayfasını tarayıcılarında açabilir ve yaptıklarınızdan yararlanabilir. CUDA sürücüleri ile karmaşık bir sunucu tarafı Linux kurulumu ve makine öğrenimi sistemini kullanmak için çok daha fazlası gerekmez.

Maliyet

Sunucu olmadığında tek yapmanız gereken HTML, CSS, JS ve model dosyalarınızı barındıracak bir CDN'dir. CDN'nin maliyeti, bir sunucuyu (potansiyel olarak bir grafik kartı takılı) 7/24 çalışan tutmaktan çok daha düşüktür.

Sunucu tarafı özellikler

TensorFlow.js'nin Node.js uygulamasından yararlanmak aşağıdaki özellikleri sağlar.

Tam CUDA desteği

Sunucu tarafında, grafik kartı hızlandırması için TensorFlow'un grafik kartıyla çalışmasını sağlamak amacıyla NVIDIA CUDA sürücülerini yüklemeniz gerekir (WebGL kullanan tarayıcının aksine, yükleme gerekmez). Ancak tam CUDA desteğiyle grafik kartının alt seviye yeteneklerinden tam olarak yararlanabilir, böylece daha hızlı eğitim ve çıkarım süreleri elde edebilirsiniz. Her ikisi de aynı C++ arka ucunu paylaştığından, performans, Python TensorFlow uygulamasıyla eşittir.

Model Boyutu

Araştırmalardan elde edilen son teknoloji modeller için, belki gigabaytlarca büyüklüğünde çok büyük modellerle çalışıyor olabilirsiniz. Bu modeller, tarayıcı sekmesi başına bellek kullanımı sınırlamaları nedeniyle şu anda web tarayıcısında çalıştırılamaz. Daha büyük olan bu modelleri çalıştırmak için Node.js'yi kendi sunucunuzda, böyle bir modeli verimli bir şekilde çalıştırmak için ihtiyacınız olan donanım özellikleriyle birlikte kullanabilirsiniz.

IOT

Node.js, Raspberry Pi gibi popüler tek kartlı bilgisayarlarda desteklenir. Böylece TensorFlow.js modellerini bu tür cihazlarda da yürütebilirsiniz.

Hız

Node.js, JavaScript'te yazıldığından tam zamanında derleme özelliğinden yararlanır. Bu nedenle, Node.js kullandığınızda, özellikle de yaptığınız ön işlemeler için çalışma zamanında optimize edileceğinden, bu dosyayı kullanırken sıklıkla performans artışları görebilirsiniz. Bunun mükemmel bir örneğini bu başarılı örnekte Hugging Face'in, doğal dil işleme modelinde 2 kat performans artışı elde etmek için Node.js'yi nasıl kullandığını görebilirsiniz.

Artık TensorFlow.js ile ilgili temel bilgileri, nerede çalışabileceğini ve bazı avantajlarını biliyorsunuz. Şimdi de TensorFlow'la faydalı şeyler yapmaya başlayalım.

3. Sisteminiz kuruluyor

Bu eğitimde, birçok insanın kullandığı ve bulut tabanlı bir sanal makinede kullanmayı tercih ederseniz temel görüntü olarak Google Cloud Compute Engine'de mevcut olan popüler bir Linux dağıtımı olan Ubuntu'yu kullanacağız.

Yazma sırasında, yeni bir vanilla bilgi işlem motoru örneği oluştururken Ubuntu 18.04.4 LTS görüntüsünü seçebiliriz ve biz bunu kullanacağız. Elbette kendi makinenizi, hatta isterseniz farklı bir işletim sistemi de kullanabilirsiniz ancak yükleme talimatları ve bağımlılıklar sistemler arasında farklılık gösterebilir.

TensorFlow'u yükleme (Python sürümü)

Şimdi, bir "SavedModel" dışa aktarabilmemiz için öncelikle bulduğunuz / yazacağınız mevcut Python tabanlı modelleri dönüştürmeye çalıştığınızdan dosyasını kullanıyorsanız "SavedModel" örneğiniz üzerinde TensorFlow'un Python sürümünün yüklü olması gerekir şu anda indirilemiyor.

Yukarıda oluşturduğunuz bulut makinenize SSH uygulayın ve terminal penceresine şunu yazın:

Terminal penceresi:

sudo apt update
sudo apt-get install python3

Bu işlem, makinede Python 3'ün yüklü olmasını sağlayacaktır. TensorFlow'u kullanmak için Python 3.4 veya sonraki sürümler yüklenmelidir.

Doğru sürümün yüklendiğini doğrulamak için aşağıdakileri yazın:

Terminal penceresi:

python3 --version

Python 3.6.9 gibi sürüm numarasını belirten bir çıkış görürsünüz. Bu kodun düzgün şekilde yazdırıldığını ve 3,4'ten yüksek olduğunu görürseniz devam etmeye hazırız.

Ardından, Python'un paket yöneticisi olan Python 3 için PIP'yi yükleyip güncelleyeceğiz. Tür:

Terminal penceresi:

sudo apt install python3-pip
pip3 install --upgrade pip

Yine pip3 yüklemesini şu şekilde doğrulayabiliriz:

Terminal penceresi:

pip3 --version

Yazma sırasında, bu komutu çalıştırdıktan sonra pip 20.2.3 öğesinin terminalde yazdırıldığını görüyoruz.

TensorFlow'u yükleyebilmek için öncelikle "setuptools" adlı Python paketi gerekir sürüm 41.0.0 veya daha yeni bir sürüm olmalıdır. En son sürüme güncellendiğinden emin olmak için aşağıdaki komutu çalıştırın:

Terminal penceresi:

pip3 install -U setuptools

Son olarak, Python için TensorFlow'u yükleyebiliriz:

Terminal penceresi:

pip3 install tensorflow

Bu işlemin tamamlanması biraz zaman alabilir. Bu nedenle, lütfen yürütme işleminin tamamlanmasını bekleyin.

TensorFlow'un doğru bir şekilde yüklendiğini kontrol edelim. Geçerli dizininizde test.py adlı bir Python dosyası oluşturun:

Terminal penceresi:

nano test.py

Nano açıldıktan sonra, TensorFlow'un yüklü sürümünü yazdırmak için birkaç Python kodu yazabiliriz:

test.py:

import tensorflow as tf
print(tf.__version__)

Değişiklikleri diske yazmak için CTRL + O tuşuna, nano düzenleyiciden çıkmak için CTRL + X tuşuna basın.

Şimdi bu Python dosyasını çalıştırarak TensorFlow'un ekranda yazdırılan sürümünü görebiliriz:

Terminal penceresi:

python3 test.py

Yazma sırasında, TensorFlow Python sürümümüzün yüklü olduğu konsolda 2.3.1 öğesinin yüklü olduğunu görüyoruz.

4. Python modeli oluşturma

Bu codelab'in bir sonraki adımında, elde edilen eğitilmiş bu modeli "SavedModel"e nasıl kaydedebileceğimizi göstermek için basit bir Python modeli oluşturma biçiminde daha sonra TensorFlow.js komut satırı dönüştürücümüzle kullanılacak. İlke, dönüştürmeye çalıştığınız tüm Python modelleri için benzer olurdu ancak herkesin anlayabilmesi için bu kodu basit tutacağız.

Şimdi, ilk bölümde oluşturduğumuz test.py dosyamızı düzenleyelim ve kodu aşağıdaki gibi güncelleyelim:

test.py:

import tensorflow as tf
print(tf.__version__)

# Import NumPy - package for working with arrays in Python.
import numpy as np

# Import useful keras functions - this is similar to the
# TensorFlow.js Layers API functionality.
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense

# Create a new dense layer with 1 unit, and input shape of [1].
layer0 = Dense(units=1, input_shape=[1])
model = Sequential([layer0])

# Compile the model using stochastic gradient descent as optimiser
# and the mean squared error loss function.
model.compile(optimizer='sgd', loss='mean_absolute_error')

# Provide some training data! Here we are using some fictional data 
# for house square footage and house price (which is simply 1000x the 
# square footage) which our model must learn for itself.
xs = np.array([800.0, 850.0, 900.0, 950.0, 980.0, 1000.0, 1050.0, 1075.0, 1100.0, 1150.0, 1200.0, 1250.0, 1300.0, 1400.0, 1500.0, 1600.0, 1700.0, 1800.0, 1900.0, 2000.0], dtype=float)

ys = np.array([800000.0, 850000.0, 900000.0, 950000.0, 980000.0, 1000000.0, 1050000.0, 1075000.0, 1100000.0, 1150000.0, 1200000.0,  1250000.0, 1300000.0, 1400000.0, 1500000.0, 1600000.0, 1700000.0, 1800000.0, 1900000.0, 2000000.0], dtype=float)

# Train the model for 500 epochs.
model.fit(xs, ys, epochs=500, verbose=0)

# Test the trained model on a test input value
print(model.predict([1200.0]))

# Save the model we just trained to the "SavedModel" format to the
# same directory our test.py file is located.
tf.saved_model.save(model, './')

Bu kod, sağlanan x (girişler) ve y (çıktılar) arasındaki ilişkiyi tahmin etmeyi öğrenmek için çok basit bir doğrusal regresyon eğitir. Ardından, elde edilen eğitilen modeli diske kaydederiz. Her satırın işleviyle ilgili daha ayrıntılı bilgi için satır içi yorumları kontrol edin.

Bu programı çalıştırdıktan sonra dizinimize göz atarsak (python3 test.py çağrısı yaparak) geçerli dizinimizde oluşturulmuş bazı yeni dosya ve klasörleri görmemiz gerekir:

  • test.py
  • saved_model.pb
  • varlıklar
  • variables

Şimdi de TensorFlow.js dönüştürücüsü tarafından bu modeli tarayıcıda çalışacak şekilde dönüştürmek için kullanmamız gereken dosyaları oluşturduk.

5. SavedModel'i TensorFlow.js biçimine dönüştürme

TensorFlow.js dönüştürücüyü yükleme

Dönüştürücüyü yüklemek için aşağıdaki komutu çalıştırın:

Terminal penceresi:

pip3 install tensorflowjs

Çok kolaydı.

Yukarıda gösterilen sihirbaz sürümünü değil, komut satırı dönüştürücüyü (tensorflowjs_converter) kullandığımızı varsayarsak, az önce oluşturduğumuz kayıtlı modeli dönüştürmek ve parametreleri dönüştürücüye açık bir şekilde iletmek için aşağıdaki komutu çağırabiliriz:

Terminal penceresi:

tensorflowjs_converter \
    --input_format=keras_saved_model \
    ./ \
    ./predict_houses_tfjs

Burada ne oluyor? Öncelikle, az önce yüklediğimiz tensorflowjs_converter ikili programını çağırıp keras kaydedilmiş bir modeli dönüştürmeye çalıştığımızı belirtiyoruz.

Yukarıdaki örnek kodumuzda, modelimizi oluşturmak için keras'ları içe aktardığımızı ve onun üst seviye katman API'lerini kullandığımızı göreceksiniz. Python kodunuzda keras kullanmadıysanız farklı bir giriş biçimi kullanmak isteyebilirsiniz:

  • keras - keras biçimini yüklemek için (HDF5 dosya türü)
  • tf_saved_model: Keras yerine tensorflow temel API'lerini kullanan modeli yükleme.
  • tf_frozen_model: Dondurulmuş ağırlıklar içeren bir modeli yüklemek için.
  • tf_hub: Tensorflow merkezinden oluşturulan bir modeli yüklemek için.

Bu diğer biçimler hakkında daha fazla bilgiyi buradan edinebilirsiniz.

Sonraki 2 parametre, kaydedilen modelin hangi klasöre yerleştirilmiş olduğunu belirler. Yukarıdaki demoda mevcut dizini belirtiriz ve son olarak dönüşümümüzün çıktısını almak istediğimiz dizini belirtiriz. Bu dizini de yukarıda "predict_houses_tfjs" adlı bir klasör olarak belirtiriz. dizinde bulabilirsiniz.

Yukarıdaki komut çalıştırıldığında, geçerli dizinde : içeren predict_houses_tfjs adlı yeni bir klasör oluşturulur.

  • model.json
  • Grup1-shard1of1.bin

Bunlar, modeli web tarayıcısında çalıştırmak için gereken dosyalardır. Bu dosyaları sonraki bölümde kullanacağımız için kaydedin.

6. Dönüştürülmüş modelimizi tarayıcıda kullanma

Dönüştürülen dosyaları barındırma

Önce, web sayfamız aracılığıyla oluşturulan model.json ve *.bin dosyalarımızı bir web sunucusuna yerleştirmemiz gerekir. Bu demoyu takip edebilmeniz için Glitch.com adresini kullanacağız. Ancak, web mühendisliği alanındaysanız bunu yapmak için mevcut Ubuntu sunucusu örneğinizde basit bir http sunucusu başlatmayı seçebilirsiniz. Seçim size kalmış.

Dosyalar Glitch'e yükleniyor

  1. Glitch.com adresinde oturum açın
  2. Ortak kullanılan TensorFlow.js projemizi klonlamak için bu bağlantıyı kullanın. Bu kod, TensorFlow.js kitaplığını kullanıma hazır hale getiren iskelet bir html, css ve js dosyalarını içerir.
  3. "Öğeler"i tıklayın. sol panelde yer alır.
  4. "Öğe yükle"yi tıklayın ve bu klasöre yüklenecek group1-shard1of1.bin dosyasını seçin. Yüklendikten sonra, URL şu şekilde görünmelidir: 25a2251c7f165184.png
  5. Yeni yüklediğiniz group1-shard1of1.bin dosyasını tıklarsanız URL'yi konumuna kopyalayabilirsiniz. Bu yolu şimdi gösterildiği gibi kopyalayın: 92ded8d46442c404.png
  6. Şimdi model.json dosyasını yerel makinenizde favori metin düzenleyicinizi kullanarak düzenleyin ve CTRL+F tuşlarına basarak, içinde bir yerlerde bahsedilecek group1-shard1of1.bin dosyasını arayın.

Bu dosya adını 5. adımda kopyaladığınız URL ile değiştirin, ancak belirtilen yoldan hatanın oluşturduğu baştaki https://cdn.glitch.com/ kısmını silin.

Düzenleme işleminden sonra dosya şuna benzer şekilde görünecektir (ana sunucu yolunun nasıl kaldırıldığına ve yalnızca sonuçta elde edilen dosya adının nasıl tutuldığına dikkat edin): d5a338f2dc1f31d4.png 7. Şimdi, düzenlenen bu model.json dosyasını kaydedip kusur için yüklemek üzere öğeleri tıklayın, ardından "öğe yükle"yi tıklayın düğmesi (önemli). Fiziksel düğmeyi kullanmaz, sürükleyip bırakmazsanız, aynı klasörde yer almayan CDN yerine düzenlenebilir bir dosya olarak yüklenir ve TensorFlow.js belirli bir model için ikili dosyaları indirmeyi denediğinde göreli yol varsayılır. Bu işlemi doğru bir şekilde yaparsanız assets klasöründe şuna benzer 2 dosya görürsünüz: 51a6dbd5d3097ffc.png

Çok güzel! Artık, kaydedilmiş dosyalarımızı tarayıcıda gerçek bir kodla kullanmaya hazırız.

Modeli yükleme

Artık dönüştürülmüş dosyalarımızı barındırdığımıza göre, bu dosyaları yüklemek ve tahminde bulunmak için kullanmak için basit bir web sayfası yazabiliriz. Glitch proje klasöründe script.js dosyasını açın ve const MODEL_URL öğesini Glitch'e yüklediğiniz model.json dosyanız için oluşturulan Glitch.com bağlantısına işaret edecek şekilde değiştirdikten sonra bu dosyanın içeriğini aşağıdakiyle değiştirin:

script.js:

// Grab a reference to our status text element on the web page.
// Initially we print out the loaded version of TFJS.
const status = document.getElementById('status');
status.innerText = 'Loaded TensorFlow.js - version: ' + tf.version.tfjs;

// Specify location of our Model.json file we uploaded to the Glitch.com CDN.
const MODEL_URL = YOUR MODEL.JSON URL HERE! CHANGE THIS!';
// Specify a test value we wish to use in our prediction.
// Here we use 950, so we expect the result to be close to 950,000.
const TEST_VALUE = 950.0

// Create an asynchronous function.
async function run() {
    // Load the model from the CDN.
    const model = await tf.loadLayersModel(MODEL_URL);

    // Print out the architecture of the loaded model.
    // This is useful to see that it matches what we built in Python.
    console.log(model.summary());

    // Create a 1 dimensional tensor with our test value.
    const input = tf.tensor1d([TEST_VALUE]);

    // Actually make the prediction.
    const result = model.predict(input);

    // Grab the result of prediction using dataSync method
    // which ensures we do this synchronously.
    status.innerText = 'Input of ' + TEST_VALUE + 
        'sqft predicted as $' + result.dataSync()[0];
}

// Call our function to start the prediction!
run();

MODEL_URL sabitini model.json yolunuza işaret edecek şekilde değiştirdikten sonra yukarıdaki kodu çalıştırdığınızda aşağıda gösterilen bir çıkış elde edilir.

c5e8457213058ec3.png

Web tarayıcısının konsolunu incelersek (tarayıcıda geliştirici araçlarını açmak için F12 tuşuna basın), aşağıdakileri yazdıran yüklenen modelin model açıklamasını da görebiliriz:

35e79d70dbd66f27.png

Bu kodu, bu codelab'in başlangıcındaki Python kodumuzla karşılaştırdığımızda, bu ağın 1 yoğun giriş ve 1 düğümlü tek bir yoğun katmanla oluşturduğumuz aynı ağ olduğunu onaylayabiliriz.

Tebrikler! Az önce web tarayıcısında Python tarafından eğitilmiş bir model çalıştırdınız.

7. Dönüşüm sağlamayan modeller

Daha seyrek gerçekleşen işlemleri kullanmak üzere derlenen daha karmaşık modellerin dönüşüm için desteklenmediği zamanlar olacaktır. TensorFlow.js'nin tarayıcı tabanlı sürümü, TensorFlow'un tümüyle yeniden yazılmış halidir. Bu nedenle, şu anda TensorFlow C++ API'nin sahip olduğu tüm alt düzey işlemleri desteklemiyoruz (bun sayısı 1000'dir), ancak zaman içinde büyüdükçe ve temel işlemler daha kararlı hale geldikçe yenileri eklenmeye devam etmektedir.

Yazma sırasında, TensorFlow Python'da, kayıtlı model olarak dışa aktarıldığında desteklenmeyen bir işlem oluşturan bu işlev linalg.diag şeklindedir. Bunu Python'da kullanan (ürettiği sonuç işlemlerini destekleyen) bir kaydedilmişmodeli dönüştürmeye çalışırsak aşağıda gösterilene benzer bir hata görürüz:

5df94fc652393e00.png

Bu örnekte, linalg.diag çağrısının, bu codelab'in yazıldığı sırada web tarayıcısında TensorFlow.js tarafından desteklenmeyen MatrixDiagV3 adlı bir işlem oluşturmak için derlendiğini kırmızı renkle vurgulanmıştır.

Yapılması gerekenler

Bunun için iki seçeneğiniz vardır.

  1. Bu eksik işlemi TensorFlow.js'de uygulayın. Açık kaynaklı bir projeyiz ve yeni operasyonlar gibi şeylere yönelik katkıları memnuniyetle karşılıyoruz. TensorFlow.js için yeni işlemler yazma hakkında bu kılavuza bakın. Bunu yapmayı başarırsanız, bu hatayı göz ardı etmek ve herhangi bir şekilde dönüştürmeye devam etmek için komut satırı dönüştürücümüzdeki Skip_op_check işaretini kullanabilirsiniz (bu işlem, oluşturduğunuz, eksik operasyonu destekleyen yeni TensorFlow.js derlemenizde kullanılabilir olduğu varsayılır).
  2. Dışa aktardığınız savedmodel dosyasında desteklenmeyen işlemi Python kodunuzun hangi bölümünün ürettiğini belirleyin. Küçük bir kod grubunda bu özelliği bulmak kolay olabilir ancak daha karmaşık modellerde, belirli bir işlemi savedmodel dosya biçiminde bir kez oluşturan üst düzey Python işlev çağrısını tanımlamaya yönelik bir yöntem olmadığından bu süreç epey araştırma gerektirebilir. Ancak bulunduktan sonra, desteklenen farklı bir yöntem kullanmak için bunu değiştirebilirsiniz.

8. Tebrikler

Tebrikler, web tarayıcısında TensorFlow.js aracılığıyla Python modeli kullanmak için ilk adımlarınızı attınız.

Özet

Bu kod laboratuvarında şunları yapmayı öğrendik:

  1. Linux ortamımızı, Python tabanlı TensorFlow'u yükleyecek şekilde ayarlama
  2. Python "SavedModel" dışa aktarma
  3. TensorFlow.js komut satırı dönüştürücüsünü yükleme
  4. Gerekli istemci tarafı dosyalarını oluşturmak için TensorFlow.js komut satırı dönüştürücüsünü kullanın
  5. Oluşturulan dosyaları gerçek web uygulamasında kullanın
  6. Dönüşüm sağlamayacak modelleri ve bu modellerin gelecekte dönüşüm gerçekleştirmelerini sağlamak için nelerin uygulanması gerektiğini belirleyin.

Sırada ne var?

Sosyal medyada öne çıkarılma, hatta gelecekteki TensorFlow etkinliklerinde gösterilme şansı için, oluşturduğunuz her şeyde #MadeWithTFJS ile bizi etiketlemeyi unutmayın. Ne dönüştürdüğünüzü ve tarayıcıda istemci tarafını kullandığınızı görmekten memnuniyet duyarız!

Ayrıntılı bilgi için diğer TensorFlow.js codelab'leri

Göz atılabilecek web siteleri