TensorFlow.js 3.0'da neler değişti
Sürüm notlarına buradan ulaşabilirsiniz . Kullanıcıya yönelik birkaç dikkate değer özellik şunları içerir:
Özel Modüller
Boyutu optimize edilmiş tarayıcı paketleri üretmeyi desteklemek için özel tfjs modülleri oluşturma desteği sağlıyoruz. Kullanıcılarınıza daha az JavaScript gönderin. Bu konuda daha fazla bilgi edinmek için bu eğitime bakın .
Bu özellik, tarayıcıda kullanıma yöneliktir ancak bu özelliğin etkinleştirilmesi, aşağıda açıklanan bazı değişikliklerin yapılmasına neden olur.
ES2017 Kodu
Bazı ön derleme paketlerine ek olarak, artık kodumuzu NPM'ye göndermemizin ana yolu , ES2017 sözdizimine sahip ES Modülleri kullanmaktır . Bu, geliştiricilerin modern JavaScript özelliklerinden yararlanmasına ve son kullanıcılarına ne gönderecekleri üzerinde daha fazla kontrole sahip olmalarına olanak tanır.
package.json module
girişimiz, ES2017 biçimindeki (yani paket olmayan) ayrı kitaplık dosyalarına işaret eder. Bu, ağaç sallamayı ve geliştiricinin aşağı akış aktarımı üzerinde daha fazla kontrol sahibi olmasını sağlar.
Eski tarayıcıları ve diğer modül sistemlerini desteklemek için önceden derlenmiş paketler halinde birkaç alternatif format sağlıyoruz. Aşağıdaki tabloda açıklanan adlandırma kuralını takip ederler ve bunları JsDelivr ve Unpkg gibi popüler CDN'lerden yükleyebilirsiniz.
Dosya adı | Modül Formatı | Dil Sürümü |
tf[-package].[min].js* | UMD | ES5 |
tf[-package].es2017.[min].js | UMD | ES2017 |
tf[-package].node.js** | CommonJS | ES5 |
tf[-package].es2017.fesm.[min].js | ESM (Tek düz dosya) | ES2017 |
index.js*** | ESM | ES2017 |
* [paket], ana tf.js paketinin alt paketlerine ilişkin çekirdek/dönüştürücü/katmanlar gibi adları ifade eder. [min], küçültülmemiş dosyalara ek olarak küçültülmüş dosyaları nerede sağladığımızı açıklar.
** package.json main
girdimiz bu dosyaya işaret ediyor.
*** package.json module
girdimiz bu dosyaya işaret ediyor.
Tensorflow.js'yi npm aracılığıyla kullanıyorsanız ve paketleyici kullanıyorsanız, paketleyici yapılandırmanızı, ES2017 modüllerini tüketebildiğinden veya onu package.json dosyasındaki başka bir girişe yönlendirdiğinden emin olmak için ayarlamanız gerekebilir.
@tensorflow/tfjs-core varsayılan olarak daha incedir
Daha iyi ağaç sallamayı mümkün kılmak için artık @tensorflow/tfjs-core'da varsayılan olarak zincirleme/akıcı API'yi tensörlere eklemiyoruz. En küçük paketi elde etmek için doğrudan işlemleri (ops) kullanmanızı öneririz. Bir içe import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops';
bu zincirleme API'yi geri yükler.
Ayrıca artık varsayılan olarak çekirdekler için degradeleri kaydetmiyoruz. Gradyan/eğitim desteği istiyorsanız import '@tensorflow/tfjs-core/dist/register_all_gradients';
Kodun Yeniden Düzenlenmesi, çekirdek ve degrade kayıtları
Hem operasyonlara hem de çekirdeklere katkıda bulunmanın yanı sıra özel operasyonlar, çekirdekler ve degradeler uygulamayı kolaylaştırmak için kodumuzu yeniden düzenledik. Daha fazla bilgi için bu kılavuza bakın .
Son Değişiklikler
Son derece önemli değişikliklerin tam listesini burada bulabilirsiniz, ancak bunlar arasında mulStrict veya addStrict gibi tüm *Strict işlemlerinin kaldırılması da yer alır.
Kodu 2.x'ten Yükseltme
@tensorflow/tfjs kullanıcıları
Burada listelenen tüm önemli değişiklikleri ele alın ( https://github.com/tensorflow/tfjs/releases )
@tensorflow/tfjs-core kullanıcıları
Burada ( https://github.com/tensorflow/tfjs/releases ) listelenen önemli değişiklikleri ele alın ve ardından aşağıdakileri yapın:
Zincirleme işlem artırıcıları ekleyin veya işlemleri doğrudan kullanın
yerine
import * as tf from '@tensorflow/tfjs-core';
import '@tensorflow/tfjs-backend-webgl';
const a = tf.tensor([1,2,3,4]);
const b = a.sum(); // this is a 'chained' op.
Yapman gereken
import * as tf from '@tensorflow/tfjs-core';
import '@tensorflow/tfjs-backend-webgl';
import '@tensorflow/tfjs-core/dist/public/chained_ops/sum'; // add the 'sum' chained op to all tensors
const a = tf.tensor([1,2,3,4]);
const b = a.sum();
Ayrıca tüm zincirleme/akıcı API'leri aşağıdaki içe aktarma işlemiyle içe aktarabilirsiniz.
import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops';
Alternatif olarak op'u doğrudan kullanabilirsiniz (burada adlandırılmış içe aktarmaları da kullanabilirsiniz)
import * as tf from '@tensorflow/tfjs-core';
import '@tensorflow/tfjs-backend-webgl';
const a = tf.tensor([1,2,3,4]);
const b = tf.sum(a);
Başlatma kodunu içe aktar
Yalnızca adlandırılmış içe aktarmalar kullanıyorsanız ( import * as ...
yerine), bazı durumlarda bunu yapmanız gerekebilir.
import @tensorflow/tfjs-core
programınızın üst kısmına yakın bir yerde, bu agresif ağaç sallayıcıların gerekli başlatmayı bırakmasını önler.
Kodu 1.x'ten Yükseltme
@tensorflow/tfjs kullanıcıları
Burada listelenen tüm önemli değişiklikleri ele alın. Ardından 2.x'ten yükseltme talimatlarını izleyin
@tensorflow/tfjs-core kullanıcıları
Burada listelenen tüm önemli değişiklikleri ele alın, aşağıda açıklandığı gibi bir arka uç seçin ve ardından 2.x'ten yükseltme adımlarını izleyin.
Arka uç(lar) seçme
TensorFlow.js 2.0'da cpu ve webgl arka uçlarını kendi paketlerine kaldırdık. Bu arka uçların nasıl ekleneceğine ilişkin talimatlar için @tensorflow/tfjs-backend-cpu , @tensorflow/tfjs-backend-webgl , @tensorflow/tfjs-backend-wasm , @tensorflow/tfjs-backend-webgpu adresine bakın.