TensorFlow.js 3.0'a yükseltme

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ı sağlamak 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

Ziyade

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 lazım

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. Daha sonra 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.