TensorFlow.js 3.0으로 업그레이드

TensorFlow.js 3.0의 변경된 사항

릴리스 노트는 여기에서 확인할 수 있습니다 . 사용자가 접하는 몇 가지 주목할만한 기능은 다음과 같습니다.

맞춤형 모듈

우리는 크기에 최적화된 브라우저 번들 생성을 지원하기 위해 사용자 정의 tfjs 모듈 생성을 지원합니다. 사용자에게 더 적은 양의 JavaScript를 제공하십시오. 이에 대해 자세히 알아보려면 이 튜토리얼을 참조하세요 .

이 기능은 브라우저 배포에 맞춰져 있지만 이 기능을 활성화하면 아래에 설명된 일부 변경 사항이 적용됩니다.

ES2017 코드

일부 사전 컴파일 번들 외에도 현재 코드를 NPM에 제공하는 주요 방법은 ES2017 구문을 사용하는 ES 모듈 입니다 . 이를 통해 개발자는 최신 JavaScript 기능을 활용하고 최종 사용자에게 제공하는 내용을 더 효과적으로 제어할 수 있습니다.

package.json module 진입점은 ES2017 형식(번들이 아님)의 개별 라이브러리 파일에 대한 것입니다. 이를 통해 트리 쉐이킹이 가능해지고 다운스트림 변환에 대한 개발자 제어가 더욱 강화됩니다.

우리는 레거시 브라우저 및 기타 모듈 시스템을 지원하기 위해 사전 컴파일된 번들로 몇 가지 대체 형식을 제공합니다. 아래 표에 설명된 명명 규칙을 따르며 JsDelivr 및 Unpkg와 같은 널리 사용되는 CDN에서 로드할 수 있습니다.

파일 이름 모듈 형식 언어 버전
tf[-패키지].[최소].js* UMD ES5
tf[-패키지].es2017.[최소].js UMD ES2017
tf[-패키지].node.js** 커먼JS ES5
tf[-패키지].es2017.fesm.[분].js ESM(단일 플랫 파일) ES2017
index.js*** ESM ES2017

* [패키지]는 기본 tf.js 패키지의 하위 패키지에 대한 core/converter/layers와 같은 이름을 나타냅니다. [min]은 축소되지 않은 파일 외에 축소된 파일을 제공하는 위치를 설명합니다.

** package.json main 항목은 이 파일을 가리킵니다.

*** package.json module 항목은 이 파일을 가리킵니다.

npm을 통해 tensorflow.js를 사용하고 번들러를 사용하는 경우 번들러 구성을 조정하여 ES2017 모듈을 사용하거나 out package.json의 항목 중 다른 항목을 가리킬 수 있는지 확인해야 할 수 있습니다.

@tensorflow/tfjs-core는 기본적으로 더 얇습니다.

더 나은 트리 쉐이킹을 가능하게 하기 위해 더 이상 @tensorflow/tfjs-core에 기본적으로 텐서에 체이닝/유창한 API를 포함하지 않습니다. 가장 작은 번들을 얻으려면 작업(ops)을 직접 사용하는 것이 좋습니다. 우리는 import import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops'; 체인 API를 복원합니다.

또한 더 이상 기본적으로 커널에 대한 그래디언트를 등록하지 않습니다. 그래디언트/훈련 지원을 원하는 경우 import '@tensorflow/tfjs-core/dist/register_all_gradients';

코드 재구성, 커널 및 그래디언트 레지스트리

우리는 작업과 커널을 더 쉽게 기여하고 사용자 정의 작업, 커널 및 그래디언트를 구현할 수 있도록 코드를 재구성했습니다. 자세한 내용은 이 가이드를 참조하세요 .

주요 변경 사항

주요 변경 사항의 전체 목록은 여기에서 찾을 수 있지만 여기에는 mulStrict 또는 addStrict와 같은 모든 *Strict 작업 제거가 포함됩니다.

2.x에서 코드 업그레이드

@tensorflow/tfjs 사용자

여기에 나열된 주요 변경 사항을 해결하세요( https://github.com/tensorflow/tfjs/releases ).

@tensorflow/tfjs-core 사용자

여기에 나열된 주요 변경 사항( https://github.com/tensorflow/tfjs/releases )을 해결한 후 다음을 수행하세요.

연결된 op Augmentor를 추가하거나 op를 직접 사용하세요.

보다는

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.

당신은해야합니다

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();

다음 가져오기를 사용하여 모든 체이닝/유창한 API를 가져올 수도 있습니다.

import '@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops';

또는 op를 직접 사용할 수 있습니다(여기에서도 명명된 import를 사용할 수 있습니다).

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);

초기화 코드 가져오기

import * as ... 대신 명명된 가져오기를 독점적으로 사용하는 경우 경우에 따라 다음을 수행해야 할 수도 있습니다.

import @tensorflow/tfjs-core

프로그램 상단 근처에 이렇게 하면 공격적인 트리 셰이커가 필요한 초기화를 삭제하는 것을 방지할 수 있습니다.

1.x에서 코드 업그레이드

@tensorflow/tfjs 사용자

여기에 나열된 주요 변경 사항을 해결하세요. 그런 다음 2.x에서 업그레이드하기 위한 지침을 따르세요.

@tensorflow/tfjs-core 사용자

여기에 나열된 주요 변경 사항을 해결하고 아래 설명에 따라 백엔드를 선택한 다음 2.x에서 업그레이드하는 단계를 따르세요.

백엔드 선택

TensorFlow.js 2.0에서는 CPU 및 webgl 백엔드를 자체 패키지로 제거했습니다. 해당 백엔드를 포함하는 방법에 대한 지침은 @tensorflow/tfjs-backend-cpu , @tensorflow/tfjs-backend-webgl , @tensorflow/ tfjs-backend-wasm , @tensorflow/tfjs-backend-webgpu 를 참조하세요.