1. Giriş
TensorFlow.js ile ilk adımlarınızı attınız, önceden hazırlanmış modellerimizi denediniz veya kendi modelinizi oluşturdunuz. Ancak Python'da bazı son teknoloji araştırmaların yayınlandığını gördünüz ve bu araştırmaların web tarayıcısında çalışıp çalışmayacağını merak ediyorsunuz. Belki de aklınızdaki harika fikri ölçeklenebilir bir şekilde milyonlarca insanın kullanımına sunmak istiyorsunuz. Tanıdık geldi mi? Cevabınız evet ise bu CodeLab tam size göre!
TensorFlow.js ekibi, SavedModel biçimindeki modelleri 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şim ve ölçeğiyle kullanabilirsiniz.
Neler öğreneceksiniz?
Bu kod laboratuvarında, Python tarafından oluşturulan bir SavedModel'i web tarayıcısında istemci tarafında yürütme için gerekli olan model.json biçimine aktarmak üzere TensorFlow.js komut satırı dönüştürücüsünü kullanmayı öğreneceksiniz.
Özellikle:
- Basit bir Python makine öğrenimi modeli oluşturma ve TensorFlow.js dönüştürücünün ihtiyaç duyduğu biçimde kaydetme
- Python'dan dışa aktardığınız SavedModel'e TensorFlow.js dönüştürücüyü yükleme ve kullanma
- Dönüştürme işleminden elde edilen dosyaları alıp JS web uygulamanızda kullanın.
- Bir sorun olduğunda (tüm modeller dönüştürülmez) ne yapmanız gerektiğini ve hangi seçeneklere sahip olduğunuzu öğrenin.
Yeni yayınlanmış bir araştırmayı alıp bu modeli dünya genelinde milyonlarca JavaScript geliştiricisinin kullanımına sunabildiğinizi hayal edin. Veya bu kodu kendi oluşturduğunuz içerikte kullanabilirsiniz. Bu içerik, web tarayıcısında çalıştığı için karmaşık bağımlılıklar veya ortam kurulumu gerektirmez. Dolayısıyla, dünyanın her yerinden kullanıcılar bu içeriği deneyimleyebilir. Hacking'e hazır mısınız? Başlayın!
Dönüştürdüğünüz öğeleri bizimle paylaşın.
Bugün öğrendiklerinizi kullanarak Python'daki bazı favori modellerinizi dönüştürmeyi deneyebilirsiniz. Bunu başarıyla yapabilir ve modelin çalıştığı bir demo web sitesi oluşturabilirseniz projenizin TensorFlow blogumuzda veya gelecekteki göster ve anlat etkinliklerimizde yer alması için sosyal medyada #MadeWithTFJS hashtag'ini kullanarak bizi etiketleyin. Web'e aktarılan daha fazla harika araştırma görmek ve daha fazla kullanıcının bu harika örnekte olduğu gibi bu tür modelleri yenilikçi veya yaratıcı şekillerde kullanmasını sağlamak istiyoruz.
2. TensorFlow.js nedir?

TensorFlow.js, JavaScript'in çalıştırılabildiği her yerde çalışabilen bir açık kaynaklı makine öğrenimi kitaplığıdır. Python'da yazılmış orijinal TensorFlow kitaplığına dayanan bu kitaplık, JavaScript ekosisteminde bu geliştirici deneyimini ve API'lerini yeniden oluşturmayı amaçlar.
Nerede kullanılabilir?
JavaScript'in taşınabilirliği sayesinde artık tek bir dilde yazabilir ve aşağıdaki platformların tümünde kolayca makine öğrenimi gerçekleştirebilirsiniz:
- Düz JavaScript kullanılarak web tarayıcısında istemci tarafında
- Node.js kullanan sunucu tarafı ve Raspberry Pi gibi IoT cihazları
- Electron'u kullanan masaüstü uygulamaları
- React Native kullanan yerel mobil uygulamalar
TensorFlow.js, bu ortamların her birinde birden fazla arka ucu da destekler (örneğin, CPU veya WebGL gibi, içinde yürütülebileceği gerçek donanım tabanlı ortamlar). Bu bağlamda "arka uç", sunucu tarafı bir ortam anlamına gelmez. Örneğin, yürütme için arka uç WebGL'de istemci tarafı olabilir. Bu, uyumluluğu sağlamak ve her şeyin hızlı çalışmasını sağlamak içindir. TensorFlow.js şu anda şunları desteklemektedir:
- Cihazın grafik kartında (GPU) WebGL yürütme: Bu, GPU hızlandırmasıyla daha büyük modelleri (boyutu 3 MB'tan fazla) yürütmenin en hızlı yoludur.
- Örneğin, eski nesil cep telefonları da dahil olmak üzere cihazlarda CPU performansını artırmak için CPU'da Web Assembly (WASM) yürütme. Bu, içeriklerin grafik işlemciye yüklenmesiyle ilgili ek yük nedeniyle WASM ile CPU'da WebGL'ye kıyasla daha hızlı çalışabilen daha küçük modeller (boyutu 3 MB'tan az) için daha uygundur.
- CPU yürütme: Diğer ortamların hiçbiri kullanılamıyorsa yedek olarak bu ortam kullanılmalıdır. Bu yöntem üçü arasında en yavaş olanıdır ancak her zaman kullanılabilir.
Not: Hangi cihazda çalıştıracağınızı biliyorsanız bu arka uçlardan birini zorunlu kılmayı seçebilirsiniz. Bunu belirtmezseniz TensorFlow.js'in sizin için karar vermesine izin verebilirsiniz.
İstemci tarafı süper güçleri
TensorFlow.js'yi istemci makinesindeki web tarayıcısında çalıştırmak, dikkate alınması gereken çeşitli avantajlar sağlayabilir.
Gizlilik
Verileri hiçbir zaman üçüncü taraf web sunucusuna göndermeden istemci makinesinde hem eğitebilir hem de sınıflandırabilirsiniz. Bu, yerel yasalara (ör. GDPR) uymak veya kullanıcının makinesinde tutmak isteyebileceği ve üçüncü tarafa gönderilmeyen verileri işlemek için gerekli olabilir.
Hız
Verileri uzak bir sunucuya göndermeniz gerekmediğinden çıkarım (verileri sınıflandırma işlemi) daha hızlı olabilir. Daha da iyisi, kullanıcı size erişim izni verirse kamera, mikrofon, GPS, ivmeölçer gibi cihaz sensörlerine doğrudan erişebilirsiniz.
Erişim ve ölçeklendirme
Dünyanın herhangi bir yerindeki kullanıcılar, tek bir tıklamayla kendilerine gönderdiğiniz bağlantıyı tıklayabilir, web sayfasını tarayıcılarında açabilir ve oluşturduğunuz içeriği kullanabilir. Makine öğrenimi sistemini kullanmak için CUDA sürücüleri ve çok daha fazlasıyla karmaşık bir sunucu tarafı Linux kurulumuna gerek yoktur.
Maliyet
Sunucu olmadığı için HTML, CSS, JS ve model dosyalarınızı barındırmak üzere yalnızca bir CDN için ödeme yapmanız gerekir. CDN'nin maliyeti, 7/24 çalışan bir sunucu (muhtemelen bağlı bir grafik kartıyla) bulundurmaktan çok daha düşüktür.
Sunucu tarafı özellikleri
TensorFlow.js'in Node.js uygulamasından yararlanarak aşağıdaki özellikler etkinleştirilir.
Tam CUDA desteği
Sunucu tarafında, grafik kartı hızlandırması için TensorFlow'un grafik kartıyla çalışmasını sağlamak üzere NVIDIA CUDA sürücülerini yüklemeniz gerekir (WebGL'nin kullanıldığı tarayıcıda yükleme gerekmez). Ancak tam CUDA desteğiyle grafik kartının daha düşük seviyeli özelliklerinden 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ığı için performans, Python TensorFlow uygulamasıyla aynı düzeydedir.
Model Boyutu
Araştırmalardaki en yeni modellerle çalışırken çok büyük modellerle (ör. gigabaytlarca) çalışabilirsiniz. Bu modeller, tarayıcı sekmesi başına bellek kullanımıyla ilgili sınırlamalar nedeniyle şu anda web tarayıcısında çalıştırılamaz. Bu büyük modelleri çalıştırmak için kendi sunucunuzda Node.js'yi kullanabilirsiniz. Sunucunuz, bu tür bir modeli verimli bir şekilde çalıştırmak için gereken donanım özelliklerine sahip olmalıdır.
IOT
Node.js, Raspberry Pi gibi popüler tek kartlı bilgisayarlarda desteklenir. Bu da TensorFlow.js modellerini bu tür cihazlarda da çalıştırabileceğiniz anlamına gelir.
Hız
Node.js, JavaScript ile yazıldığından tam zamanında derlemeden yararlanır. Bu nedenle, Node.js'yi kullandığınızda genellikle performans artışı görebilirsiniz. Çünkü Node.js, özellikle yaptığınız tüm ön işleme için çalışma zamanında optimize edilir. Bununla ilgili harika bir örneği bu örnek olayda görebilirsiniz. Bu örnek olayda, Hugging Face'in doğal dil işleme modelinde 2 kat performans artışı elde etmek için Node.js'yi nasıl kullandığı gösterilmektedir.
TensorFlow.js'in temellerini, nerede çalışabileceğini ve bazı avantajlarını öğrendiğinize göre artık TensorFlow.js ile faydalı şeyler yapmaya başlayabiliriz.
3. Sisteminizi ayarlama
Bu eğitimde, birçok kişi tarafından kullanılan ve bulut tabanlı bir sanal makinede takip etmeyi tercih ederseniz Google Cloud Compute Engine'de temel görüntü olarak kullanılabilen popüler bir Linux dağıtımı olan Ubuntu'yu kullanacağız.
Bu makalenin yazıldığı sırada, yeni bir vanilla Compute Engine örneği oluştururken Ubuntu 18.04.4 LTS görüntüsünü seçebiliyoruz. Bu görüntüyü kullanacağız. Elbette kendi makinenizi veya isterseniz farklı bir işletim sistemi kullanabilirsiniz ancak kurulum talimatları ve bağımlılıklar sistemler arasında farklılık gösterebilir.
TensorFlow'u yükleme (Python sürümü)
Şimdi de bulduğunuz veya yazacağınız mevcut Python tabanlı bir modeli dönüştürmeye çalıştığınızı varsayalım. Python'dan "SavedModel" dosyası dışa aktarabilmek için "SavedModel" zaten indirilemiyorsa TensorFlow'un Python sürümünü örneğinizde kurmanız gerekir.
Yukarıda oluşturduğunuz bulut makinenize SSH ile bağlanın ve terminal penceresine aşağıdakileri yazın:
Terminal penceresi:
sudo apt update
sudo apt-get install python3
Bu komut, makineye Python 3'ün yüklendiğinden emin olmamızı sağlar. TensorFlow'u kullanmak için Python 3.4 veya sonraki sürümlerin yüklü olması gerekir.
Doğru sürümün yüklendiğini doğrulamak için aşağıdakileri yazın:
Terminal penceresi:
python3 --version
Sürüm numarasını belirten bir çıkış görmeniz gerekir (ör. Python 3.6.9). Bu değer doğru şekilde yazdırılmışsa ve 3,4'ten yüksekse devam edebiliriz.
Ardından, Python'ın 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
pip3 kurulumunu şu komutla tekrar doğrulayabiliriz:
Terminal penceresi:
pip3 --version
Bu komut yürütüldükten sonra terminale pip 20.2.3 yazıldığını görüyoruz.
TensorFlow'u yükleyebilmemiz için "setuptools" adlı Python paketinin 41.0.0 veya sonraki bir sürümde olması gerekir. 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. Lütfen yürütme işlemi bitene kadar bekleyin.
TensorFlow'un doğru şekilde yüklenip yüklenmediğini kontrol edelim. Geçerli dizininizde test.py adlı bir Python dosyası oluşturun:
Terminal penceresi:
nano test.py
Nano açıldıktan sonra, yüklü TensorFlow sürümünü yazdırmak için biraz 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 ise CTRL + X tuşuna basın.
Artık bu Python dosyasını çalıştırarak ekrana yazdırılan TensorFlow sürümünü görebiliriz:
Terminal penceresi:
python3 test.py
Bu makalenin yazıldığı sırada, yüklü TensorFlow Python sürümümüz için konsola 2.3.1 yazdırıldığını görüyoruz.
4. Python modeli oluşturma
Bu codelab'in sonraki adımında, elde edilen eğitilmiş modeli "SavedModel" biçiminde nasıl kaydedebileceğimizi göstermek için basit bir Python modeli oluşturma işlemi açıklanacaktır. Bu model daha sonra TensorFlow.js komut satırı dönüştürücümüzle kullanılabilir. Bu ilke, dönüştürmeye çalıştığınız tüm Python modelleri için benzer olacaktır ancak herkesin anlayabilmesi için bu kodu basit tutacağız.
İlk 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'ler (girişler) ve y'ler (çıkışlar) arasındaki ilişkiyi tahmin etmeyi öğrenmek için çok basit bir doğrusal regresyonu eğitir. Eğitilen modeli diske kaydederiz. Her satırın ne yaptığı hakkında daha fazla bilgi için satır içi yorumları inceleyin.
Bu programı çalıştırdıktan sonra dizinimizi kontrol edersek (python3 test.py çağrısı yaparak) geçerli dizinimizde oluşturulan bazı yeni dosya ve klasörleri görmemiz gerekir:
- test.py
- saved_model.pb
- varlıklar
- variables
Artık bu modeli tarayıcıda çalışacak şekilde dönüştürmek için TensorFlow.js dönüştürücünün kullanması gereken dosyaları oluşturduk.
5. SavedModel'i TensorFlow.js biçimine dönüştürme
TensorFlow.js dönüştürücüsünü 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
Oldukça kolaydı.
Yukarıda gösterilen sihirbaz sürümü yerine komut satırı dönüştürücüsünü (tensorflowjs_converter) kullandığımızı varsayarsak, yeni oluşturduğumuz kaydedilmiş modeli dönüştürmek ve parametreleri dönüştürücüye açıkça iletmek için aşağıdaki komutu çağırabiliriz:
Terminal penceresi:
tensorflowjs_converter \
--input_format=keras_saved_model \
./ \
./predict_houses_tfjs
Neler oluyor? Öncelikle, yeni yüklediğimiz tensorflowjs_converter ikili programını çağırıyor ve kaydedilmiş bir Keras modelini dönüştürmeye çalıştığımızı belirtiyoruz.
Yukarıdaki örnek kodumuzda, modelimizi oluşturmak için Keras'ı içe aktardığımızı ve daha üst düzey 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 (HDF5 dosya türü) yüklemek için
- tf_saved_model: Keras yerine TensorFlow Core API'lerini kullanan modeli yüklemek için.
- tf_frozen_model: Dondurulmuş ağırlıklar içeren bir modeli yüklemek için kullanılır.
- tf_hub: TensorFlow Hub'dan oluşturulan bir modeli yüklemek için kullanılır.
Bu diğer biçimler hakkında daha fazla bilgiyi buradan edinebilirsiniz.
Sonraki 2 parametre, kaydedilen modelin hangi klasörde bulunduğunu belirtir. Yukarıdaki demomuzda önce geçerli dizini, ardından da dönüşümümüzü hangi dizine aktarmak istediğimizi belirtiriz. Bunu yukarıda geçerli dizindeki "predict_houses_tfjs" adlı bir klasör olarak belirtmiştik.
Yukarıdaki komut çalıştırıldığında, geçerli dizinde predict_houses_tfjs adlı yeni bir klasör oluşturulur ve bu klasörde : bulunur.
- model.json
- Group1-shard1of1.bin
Bunlar, modeli web tarayıcısında çalıştırmak için gereken dosyalardır. Bu dosyaları kaydedin. Bunları sonraki bölümde kullanacağız.
6. Dönüştürülmüş modelimizi tarayıcıda kullanma
Dönüştürülen dosyaları barındırma
Öncelikle, web sunucusunda oluşturulan model.json ve *.bin dosyalarımızı web sayfamız üzerinden erişebilmek için yerleştirmemiz gerekir. Bu demoda, kolayca takip edebilmeniz için Glitch.com'u kullanacağız. Ancak web mühendisliği alanında çalışıyorsanız bunun yerine mevcut Ubuntu sunucu örneğinizde basit bir HTTP sunucusu başlatmayı tercih edebilirsiniz. Seçim size kalmış.
Glitch'e dosya yükleme
- Glitch.com adresinde oturum açın.
- Şablon TensorFlow.js projemizi klonlamak için bu bağlantıyı kullanın. Bu, kullanıma hazır TensorFlow.js kitaplığını bizim için içe aktaran iskelet HTML, CSS ve JS dosyalarını içerir.
- Sol panelde "öğeler" klasörünü tıklayın.
- "Öğe yükle"yi tıklayın ve bu klasöre yüklenecek
group1-shard1of1.binöğesini seçin. Yüklendikten sonra şu şekilde görünmelidir:
- Yeni yüklediğiniz
group1-shard1of1.bindosyasını tıkladığınızda URL'yi konumuna kopyalayabilirsiniz. Bu yolu şimdi gösterildiği gibi kopyalayın:
- Şimdi
model.jsondosyasını yerel makinenizde en sevdiğiniz metin düzenleyiciyi kullanarak düzenleyin vegroup1-shard1of1.bindosyasını (CTRL+F tuşlarını kullanarak) arayın. Bu dosya,model.jsondosyasının içinde bir yerde belirtilir.
Bu dosya adını 5. adımda kopyaladığınız URL ile değiştirin ancak kopyalanan yoldan kaynaklanan ve bu hatanın oluşturduğu baştaki https://cdn.glitch.com/ işaretini silin.
Düzenlendikten sonra dosya şu şekilde görünmelidir (yüklenen dosya adının korunması için baştaki sunucu yolunun nasıl kaldırıldığına dikkat edin):
7. Şimdi bu düzenlenmiş model.json dosyasını kaydedin ve öğeleri tıklayarak glitch'e yükleyin, ardından "öğe yükle" düğmesini tıklayın (önemli). Fiziksel düğmeyi kullanmaz ve sürükleyip bırakma işlemini yaparsanız dosya, CDN'ye yüklenmek yerine düzenlenebilir bir dosya olarak yüklenir. Bu dosya aynı klasörde olmaz ve TensorFlow.js belirli bir model için ikili dosyaları indirmeye çalıştığında göreli yol varsayılır. İşlemi doğru şekilde yaptıysanız assets klasöründe aşağıdaki gibi 2 dosya görmeniz gerekir: 
Mükemmel! Artık tarayıcıda gerçek kod kullanarak kayıtlı dosyalarımızı kullanmaya hazırız.
Modeli yükleme
Dönüştürülmüş dosyalarımızı barındırdığımıza göre artık bu dosyaları yüklemek ve tahmin yapmak için kullanmak üzere basit bir web sayfası yazabiliriz. Glitch proje klasöründe script.js dosyasını açın ve script.js dosyasını, Glitch'e yüklediğiniz model.json dosyanız için oluşturulan Glitch.com bağlantısını gösterecek şekilde değiştirdikten sonra bu dosyanın içeriğini aşağıdakilerle değiştirin:const MODEL_URL
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ırmak, aşağıda gösterilen çıktıyı üretir.

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) yüklenen modelin model açıklamasını da görebiliriz. Bu açıklama şunları yazdırır:

Bunu bu codelab'in başındaki Python kodumuzla karşılaştırdığımızda, 1 yoğun giriş ve 1 düğümlü bir yoğun katmanla oluşturduğumuz ağın aynı olduğunu doğrulayabiliriz.
Tebrikler! Web tarayıcısında dönüştürülmüş bir Python eğitilmiş modelini çalıştırdınız.
7. Dönüşüm gerçekleştirmeyen modeller
Daha az kullanılan işlemleri kullanmak için derlenen daha karmaşık modellerin dönüşüm için desteklenmediği zamanlar olabilir. TensorFlow.js'in tarayıcı tabanlı sürümü, TensorFlow'un tamamen yeniden yazılmış bir sürümüdür. Bu nedenle, TensorFlow C++ API'sinin sahip olduğu tüm düşük seviyeli işlemleri (binlerce işlem vardır) şu anda desteklemiyoruz. Ancak zaman içinde, büyüdükçe ve temel işlemler daha kararlı hale geldikçe daha fazla işlem eklenmektedir.
Bu makalenin yazıldığı sırada, TensorFlow Python'da savedmodel olarak dışa aktarıldığında desteklenmeyen bir işlem oluşturan işlevlerden biri linalg.diag'dır. Bunu Python'da (üretilen işlemleri destekler) kullanan bir savedmodel'i dönüştürmeye çalışırsak aşağıda gösterilene benzer bir hata görürüz:

Burada, linalg.diag çağrısının, bu codelab yazılırken 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ış olarak görüyoruz.
Ne yapmalısınız?
Bunun için iki seçeneğiniz vardır.
- Bu eksik işlemi TensorFlow.js'de uygulayın. Açık kaynaklı bir proje olduğumuz için yeni işlemler gibi konularda katkıları memnuniyetle karşılıyoruz. TensorFlow.js için yeni işlemler yazma hakkındaki bu kılavuzu inceleyin. Bunu yapmayı başarırsanız bu hatayı yoksaymak ve dönüştürmeye devam etmek için komut satırı dönüştürücümüzde
Skip_op_checkişaretini kullanabilirsiniz (bu işlem, oluşturduğunuz ve eksik işlemi destekleyen yeni TensorFlow.js derlemenizde kullanılabildiği varsayılır). - Dışa aktardığınız
savedmodeldosyasında Python kodunuzun hangi bölümünün desteklenmeyen işlemi ürettiğini belirleyin. Küçük bir kod grubunda bu kolayca bulunabilir ancak daha karmaşık modellerde,savedmodeldosya biçiminde belirli bir işlemi bir kez üreten üst düzey Python işlev çağrısını tanımlamak için şu anda bir yöntem olmadığından bu, oldukça fazla inceleme gerektirebilir. Ancak bulunduktan sonra, desteklenen farklı bir yöntemi kullanmak için bunu değiştirebilirsiniz.
8. Tebrikler
Tebrikler! Web tarayıcısında TensorFlow.js aracılığıyla Python modeli kullanma konusunda ilk adımlarınızı attınız.
Özet
Bu kod laboratuvarında şunları öğrendik:
- Python tabanlı TensorFlow'u yüklemek için Linux ortamımızı ayarlama
- Python "SavedModel" dışa aktarma
- TensorFlow.js komut satırı dönüştürücüsünü yükleme
- Gerekli istemci tarafı dosyalarını oluşturmak için TensorFlow.js komut satırı dönüştürücüsünü kullanın.
- Oluşturulan dosyaları gerçek web uygulamasında kullanma
- Dönüştürülmeyecek modelleri ve gelecekte dönüştürülmelerini sağlamak için yapılması gerekenleri belirleyin.
Yapabilecekleriniz
Sosyal medyada yer alma veya gelecekteki TensorFlow etkinliklerinde gösterilme şansı yakalamak için #MadeWithTFJS kullanarak oluşturduğunuz içeriklerde bizi etiketlemeyi unutmayın. Tarayıcıda istemci tarafında dönüştürdüğünüz ve kullandığınız öğeleri görmeyi çok isteriz.
Daha ayrıntılı bilgi için diğer TensorFlow.js Codelab uygulamaları
- TensorFlow.js'de sıfırdan nöral ağ yazma
- Nesneleri algılayabilen akıllı bir web kamerası oluşturma
- TensorFlow.js'de aktarımla öğrenmeyi kullanarak özel görüntü sınıflandırması