TensorFlow.js: Python 저장된 모델을 TensorFlow.js 형식으로 변환

1. 소개

TensorFlow.js로 첫발을 내디뎠고, 사전 제작된 모델을 사용해 보거나, 자신만의 모델을 만들 수도 있습니다. 그런데 Python에서 몇 가지 최첨단 연구가 발표된 것을 보고, 이러한 아이디어가 확장 가능한 방식으로 수백만 명의 사람들에게 구현되어 웹 브라우저에서 실행될지 궁금합니다. 익숙하신가요? 그렇다면 이 Codelab이 도움이 될 것입니다.

TensorFlow.js팀은 웹의 도달범위와 규모에서 이러한 모델을 쉽게 사용할 수 있도록 명령줄 변환기를 통해 SavedModel 형식의 모델을 TensorFlow.js로 변환하는 편리한 도구를 만들었습니다.

학습할 내용

이 Codelab에서는 TensorFlow.js 명령줄 변환기를 사용하여 Python에서 생성된 SavedModel을 웹브라우저의 클라이언트 측에서 실행하는 데 필요한 model.json 형식으로 포팅하는 방법을 알아봅니다.

특히 다음에 주의해야 합니다.

  • 간단한 Python ML 모델을 만들고 TensorFlow.js 변환기에 필요한 필수 형식으로 저장하는 방법
  • Python에서 내보낸 SavedModel에 TensorFlow.js 변환기를 설치하고 사용하는 방법
  • 변환에서 결과 파일을 가져와 JS 웹 애플리케이션에서 사용합니다.
  • 문제가 발생했을 때 취해야 할 조치 (모든 모델이 전환되는 것은 아님)와 사용 가능한 옵션을 파악합니다.

새로 공개된 연구를 통해 전 세계 수백만 명의 JS 개발자에게 모델을 제공할 수 있다고 상상해 보세요. 또는 복잡한 종속 항목이나 환경 설정이 필요하지 않기 때문에 전 세계 누구나 웹브라우저에서 실행하면 이를 경험할 수 있습니다. 해킹할 준비가 되셨나요? 시작하기

전환 데이터를 Google에 공유해 주세요.

오늘 배운 내용을 사용하여 Python에서 선호하는 모델을 변환해 볼 수 있습니다. 이를 성공적으로 수행하고 실제로 작동하는 모델의 데모 웹사이트를 제작한다면 소셜 미디어에서 #MadeWithTFJS 해시태그를 사용해 Google을 태그하여 TensorFlow 블로그나 향후 이벤트 발표에 프로젝트가 소개될 기회를 잡으세요. 더 많은 놀라운 연구 결과가 웹으로 이전되어 더 많은 사람들이 이 훌륭한 사례와 같이 혁신적이고 창의적인 방식으로 이러한 모델을 사용할 수 있게 되기를 바랍니다.

2. TensorFlow.js란 무엇인가요?

1aee0ede85885520.png

TensorFlow.js는 JavaScript가 가능한 모든 곳에서 실행할 수 있는 오픈소스 머신러닝 라이브러리입니다. Python으로 작성된 원래 TensorFlow 라이브러리를 기반으로 하며 JavaScript 생태계용 개발자 환경과 API 세트를 다시 만드는 것을 목표로 합니다.

어디에서 사용할 수 있나요?

JavaScript의 이식성을 고려할 때, 이제 단일 언어로 작성하고 다음과 같은 모든 플랫폼에서 머신러닝을 쉽게 수행할 수 있습니다.

  • Vanilla JavaScript를 사용하는 웹브라우저의 클라이언트 측
  • Node.js를 사용하는 서버 측 및 IoT 기기(예: Raspberry Pi)
  • Electron을 사용하는 데스크톱 앱
  • React Native를 사용하는 네이티브 모바일 앱

또한 TensorFlow.js는 이러한 각 환경 (예: CPU 또는 WebGL) 내에서 실행할 수 있는 실제 하드웨어 기반 환경 내에서 여러 백엔드를 지원합니다. '백엔드' 이 맥락에서 서버 측 환경을 의미하지는 않습니다. 호환성을 보장하고 빠르게 실행하기 위해 실행을 위한 백엔드는 WebGL의 클라이언트 측일 수 있습니다. 현재 TensorFlow.js는 다음을 지원합니다.

  • 기기의 그래픽 카드에서 WebGL 실행 (GPU) - GPU 가속을 사용하여 더 큰 모델 (크기 3MB 이상)을 가장 빠르게 실행할 수 있습니다.
  • CPU에서 웹 어셈블리 (WASM) 실행 - 이전 세대의 휴대전화를 비롯한 여러 기기에서 CPU 성능을 개선합니다. 이는 그래픽 프로세서에 콘텐츠를 업로드하는 오버헤드로 인해 WebGL보다 WASM을 사용할 때 CPU에서 더 빠르게 실행될 수 있는 작은 모델 (크기 3MB 미만)에 더 적합합니다.
  • CPU 실행 - 다른 환경을 사용할 수 없어야 합니다. 이 세 가지 방법 중 가장 느리지만 언제나 도움이 됩니다.

참고: 실행할 기기를 알고 있는 경우 이러한 백엔드 중 하나를 강제하도록 선택하거나, 지정하지 않는 경우 TensorFlow.js가 자동으로 결정하도록 할 수 있습니다.

클라이언트 측 슈퍼 파워

클라이언트 컴퓨터의 웹브라우저에서 TensorFlow.js를 실행하면 고려할 만한 여러 이점을 얻을 수 있습니다.

개인 정보 보호

서드 파티 웹 서버로 데이터를 전송하지 않고도 클라이언트 시스템에서 데이터를 학습시키고 분류할 수 있습니다. 데이터 수집은 GDPR과 같은 현지 법규의 준수를 위해 요구되거나, 사용자가 제3자에게 보내지 않고 컴퓨터에 보관하고자 하는 데이터를 처리하는 경우일 수 있습니다.

Speed

데이터를 원격 서버로 전송할 필요가 없으므로 추론 (데이터를 분류하는 작업)이 더 빠를 수 있습니다. 더 좋은 점은 사용자가 액세스 권한을 부여하면 카메라, 마이크, GPS, 가속도계와 같은 기기의 센서에 직접 액세스할 수 있다는 것입니다.

도달범위 및 확장

전 세계 누구나 클릭 한 번으로 내가 보낸 링크를 클릭하고, 자신의 브라우저에서 웹페이지를 열고, 내가 만든 것을 활용할 수 있습니다. CUDA 드라이버를 사용하는 복잡한 서버 측 Linux 설정이 필요 없으며 머신러닝 시스템만 사용하기만 하면 됩니다.

비용

서버가 없다는 것은 HTML, CSS, JS 및 모델 파일을 호스팅하는 CDN만 비용을 지불하면 됨을 의미합니다. CDN 비용은 연중무휴 24시간 실행되는 서버 (그래픽 카드가 연결될 수 있음)보다 훨씬 저렴합니다.

서버 측 기능

TensorFlow.js의 Node.js 구현을 활용하면 다음 기능을 사용할 수 있습니다.

완벽한 CUDA 지원

서버 측에서 그래픽 카드 가속을 위해 NVIDIA CUDA 드라이버를 설치하여 TensorFlow가 그래픽 카드와 호환할 수 있도록 해야 합니다 (WebGL을 사용하는 브라우저와 달리 설치 필요 없음). 하지만 완전한 CUDA 지원을 통해 그래픽 카드의 하위 수준 기능을 최대한 활용하여 학습 및 추론 시간을 단축할 수 있습니다. 둘 다 동일한 C++ 백엔드를 공유하므로 Python TensorFlow 구현과 동일한 성능을 발휘합니다.

모델 크기

연구 중인 최첨단 모델의 경우, 크기가 기가바이트에 달할 정도로 매우 큰 모델로 작업하게 될 수도 있습니다. 이 모델은 브라우저 탭당 메모리 사용량 한도로 인해 현재 웹브라우저에서 실행할 수 없습니다. 이러한 더 큰 모델을 실행하려면 이러한 모델을 효율적으로 실행하는 데 필요한 하드웨어 사양을 갖춘 Node.js를 자체 서버에서 사용하면 됩니다.

IOT

Node.js는 Raspberry Pi와 같이 널리 사용되는 단일 보드 컴퓨터에서 지원되므로 이러한 기기에서도 TensorFlow.js 모델을 실행할 수 있습니다.

Speed

Node.js는 자바스크립트로 작성되므로 적시 컴파일의 이점을 활용할 수 있습니다. 즉, Node.js를 사용하면 런타임에 최적화되므로 특히 실행 중인 전처리에 대해 성능이 향상되는 경우가 많습니다. 이에 대한 좋은 예는 Hugging Face가 Node.js를 사용하여 자연어 처리 모델의 성능을 2배 향상한 방법을 보여주는 우수사례에서 확인할 수 있습니다.

이제 TensorFlow.js의 기본사항과 실행 위치, 몇 가지 이점을 이해했습니다. 이제 TensorFlow.js로 유용한 작업을 해보겠습니다.

3. 시스템 설정

이 튜토리얼에서는 많은 사람들이 사용하는 인기 있는 Linux 배포판인 Ubuntu를 사용합니다. 클라우드 기반 가상 머신을 사용하는 경우 Google Cloud Compute Engine에서 기본 이미지로 사용할 수 있습니다.

이 문서를 작성하는 시점에는 사용할 새 vanilla Compute Engine 인스턴스를 생성할 때 Ubuntu 18.04.4 LTS의 이미지를 선택할 수 있습니다. 물론 자체 컴퓨터를 사용할 수도 있고, 원하는 경우 다른 운영체제를 사용할 수도 있지만 시스템마다 설치 안내와 종속 항목이 다를 수 있습니다.

TensorFlow (Python 버전) 설치

이제 발견했거나 작성할 기존 Python 기반 모델을 변환하려고 할 때 'SavedModel'을 내보낼 수 있습니다. 'SavedModel'의 경우 인스턴스에 Python 버전의 TensorFlow를 설정해야 합니다. 은(는) 아직 다운로드할 수 없습니다.

위에서 만든 클라우드 머신에 SSH를 사용한 후 터미널 창에 다음을 입력합니다.

터미널 창:

sudo apt update
sudo apt-get install python3

이렇게 하면 머신에 Python 3가 설치됩니다. TensorFlow를 사용하려면 Python 3.4 이상이 설치되어 있어야 합니다.

올바른 버전이 설치되었는지 확인하려면 다음을 입력합니다.

터미널 창:

python3 --version

Python 3.6.9와 같은 버전 번호를 나타내는 출력이 표시됩니다. 올바르게 출력된 것을 확인하고 3.4보다 높으면 계속 진행할 수 있습니다.

다음으로 Python의 패키지 관리자인 Python 3용 PIP를 설치한 다음 업데이트합니다. 유형:

터미널 창:

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

다시 다음을 통해 pip3 설치를 확인할 수 있습니다.

터미널 창:

pip3 --version

작성하는 시점에는 이 명령어를 실행한 후 pip 20.2.3가 터미널에 출력됩니다.

TensorFlow를 설치하려면 Python 패키지인 'setuptools'가 필요합니다. 버전 41.0.0 이상이 되어야 합니다 다음 명령어를 실행하여 최신 버전으로 업데이트되었는지 확인합니다.

터미널 창:

pip3 install -U setuptools

마지막으로, 이제 Python용 TensorFlow를 설치할 수 있습니다.

터미널 창:

pip3 install tensorflow

완료되는 데 다소 시간이 걸릴 수 있으므로 실행이 완료될 때까지 기다려 주세요.

TensorFlow가 올바르게 설치되었는지 확인해 보겠습니다. 현재 디렉터리에 test.py라는 Python 파일을 만듭니다.

터미널 창:

nano test.py

nano가 열리면 설치된 TensorFlow 버전을 출력하는 Python 코드를 작성할 수 있습니다.

test.py:

import tensorflow as tf
print(tf.__version__)

CTRL + O를 눌러 변경사항을 디스크에 쓰고 CTRL + X를 눌러 nano 편집기를 종료합니다.

이제 이 Python 파일을 실행하여 화면에 출력된 TensorFlow 버전을 볼 수 있습니다.

터미널 창:

python3 test.py

이 문서를 작성하는 시점 기준으로, 설치된 TensorFlow Python 버전의 콘솔에 2.3.1가 출력됩니다.

4. Python 모델 만들기

이 Codelab의 다음 단계에서는 간단한 Python 모델을 만들어 학습된 모델을 'SavedModel'에 저장하는 방법을 알아봅니다. TensorFlow.js 명령줄 변환기와 함께 사용할 수 있습니다. 변환하려는 모든 Python 모델에서 원칙은 비슷하지만 모든 사람이 이해할 수 있도록 코드를 단순하게 유지하겠습니다.

첫 번째 섹션에서 만든 test.py 파일을 수정하고 코드를 다음과 같이 업데이트해 보겠습니다.

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, './')

이 코드는 매우 간단한 선형 회귀를 학습하여 제공된 x (입력)와 y (출력) 간의 관계를 추정하는 방법을 학습합니다. 그런 다음 학습된 모델을 디스크에 저장합니다. 각 행의 기능에 관한 자세한 내용은 인라인 주석을 확인하세요.

이 프로그램을 실행한 후 python3 test.py를 호출하여 디렉터리를 확인하면 현재 디렉터리에 생성된 몇 개의 새 파일과 폴더가 표시됩니다.

  • test.py
  • saved_model.pb
  • 애셋
  • variables

이제 TensorFlow.js 변환기가 이 모델을 브라우저에서 실행하도록 변환하는 데 사용해야 하는 파일을 생성했습니다.

5. 저장된 모델을 TensorFlow.js 형식으로 변환

TensorFlow.js 변환기 설치

변환기를 설치하려면 다음 명령어를 실행합니다.

터미널 창:

pip3 install tensorflowjs

쉽네.

위에 표시된 마법사 버전이 아닌 명령줄 변환기 (tensorflowjs_converter)를 사용한다고 가정하면 다음 명령어를 호출하여 방금 만든 저장된 모델을 변환하고 매개변수를 변환기에 명시적으로 전달할 수 있습니다.

터미널 창:

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

이유가 무엇인가요? 먼저 방금 설치한 tensorflowjs_converter 바이너리를 호출하고 Keras 저장 모델을 변환하려고 함을 지정합니다.

위의 코드 예에서는 Keras를 가져오고 상위 수준 레이어 API를 사용하여 모델을 만들었습니다. Python 코드에서 Keras를 사용하지 않았다면 다른 입력 형식을 사용하는 것이 좋습니다.

  • keras - Keras 형식 (HDF5 파일 형식) 로드
  • tf_saved_model - Keras 대신 TensorFlow 핵심 API를 사용하는 모델을 로드합니다.
  • tf_frozen_model - 고정된 가중치가 포함된 모델을 로드합니다.
  • tf_hub - TensorFlow 허브에서 생성된 모델을 로드합니다.

이러한 다른 형식에 대한 자세한 내용은 여기를 참조하세요.

다음 두 개의 매개변수는 저장된 모델이 있는 폴더를 지정합니다. 위의 데모에서는 현재 디렉터리를 지정한 다음 마지막으로 변환을 출력할 디렉터리를 지정합니다. 위에서 'predict_houses_tfjs'라는 폴더로 지정합니다. 찾을 수 있습니다

위 명령어를 실행하면 현재 디렉터리에 :가 포함된 predict_houses_tfjs라는 새 폴더가 생성됩니다.

  • model.json
  • 그룹1-샤드1of1.bin

이러한 파일은 웹브라우저에서 모델을 실행하는 데 필요한 파일입니다. 다음 섹션에서 사용할 예정이므로 이 파일을 저장합니다.

6. 브라우저에서 변환된 모델 사용하기

변환된 파일 호스팅

먼저 웹 서버에서 생성된 model.json*.bin 파일을 배치하여 웹페이지를 통해 액세스할 수 있도록 해야 합니다. 이 데모에서는 쉽게 따라하실 수 있도록 Glitch.com을 사용합니다. 하지만 웹 엔지니어링에 종사하는 경우 현재 Ubuntu 서버 인스턴스에서 간단한 http 서버를 실행하여 이 작업을 수행할 수 있습니다. 선택은 사용자님의 몫입니다.

Glitch에 파일 업로드하기

  1. Glitch.com에 로그인합니다.
  2. 이 링크를 사용하여 상용구 TensorFlow.js 프로젝트를 클론합니다. 여기에는 TensorFlow.js 라이브러리를 가져와 바로 사용할 수 있도록 스켈레톤 html, css, js 파일이 포함되어 있습니다.
  3. '애셋'을 클릭합니다. 왼쪽 패널에 있습니다.
  4. '애셋 업로드'를 클릭합니다. group1-shard1of1.bin 파일을 선택하여 이 폴더에 업로드합니다. 업로드가 완료되면 다음과 같이 표시됩니다. 25a2251c7f165184.png
  5. 방금 업로드한 group1-shard1of1.bin 파일을 클릭하면 URL을 해당 위치에 복사할 수 있습니다. 다음과 같이 이제 이 경로를 복사합니다. 92ded8d46442c404.png
  6. 이제 로컬 컴퓨터에서 원하는 텍스트 편집기를 사용하여 model.json를 수정하고 Ctrl+F를 사용하여 파일 내 어딘가에 언급된 group1-shard1of1.bin 파일을 검색합니다.

이 파일 이름을 5단계에서 복사한 URL로 바꾸고 복사한 경로에서 글리치가 생성한 맨 앞의 https://cdn.glitch.com/는 삭제합니다.

수정한 후에는 다음과 같이 표시됩니다 (선행 서버 경로가 삭제되어 업로드한 파일 이름만 유지됨). d5a338f2dc1f31d4.png 7. 이제 애셋을 클릭하여 글리치를 위해 수정된 model.json 파일을 저장하고 업로드한 다음 '애셋 업로드'를 클릭합니다. 버튼(중요)을 클릭합니다. 실제 버튼을 사용하지 않고 드래그 앤 드롭하면, CDN에 업로드되는 대신 수정 가능한 파일로 업로드되며, 동일한 폴더에 있지 않으며 TensorFlow.js가 특정 모델의 바이너리 파일을 다운로드하려고 할 때 상대 경로가 가정됩니다. 올바르게 완료했다면 assets 폴더에 다음과 같이 파일 2개가 표시됩니다. 51a6dbd5d3097ffc.png

좋습니다. 이제 저장된 파일을 브라우저에서 실제 코드와 함께 사용할 준비가 되었습니다.

모델 로드

이제 변환된 파일을 호스팅했으므로 이러한 파일을 로드하고 예측하는 데 사용하는 간단한 웹페이지를 작성할 수 있습니다. Glitch 프로젝트 폴더에서 script.js를 열고 Glitch에 업로드한 model.json 파일에 대해 생성된 Glitch.com 링크를 가리키도록 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.json 경로를 가리키도록 MODEL_URL 상수를 변경한 후 위의 코드를 실행하면 다음과 같은 출력이 표시됩니다.

c5e8457213058ec3.png

웹브라우저의 콘솔을 검사하면 (브라우저에 개발자 도구가 표시되도록 F12 키를 누르면) 출력되는 로드된 모델의 모델 설명도 볼 수 있습니다.

35e79d70dbd66f27.png

이를 이 Codelab 시작 부분의 Python 코드와 비교하면 밀집 입력 1개와 노드가 1개인 밀집 레이어 1개로 만든 것과 동일한 네트워크임을 확인할 수 있습니다.

축하합니다. 방금 웹브라우저에서 변환된 Python 학습 모델을 실행했습니다.

7. 변환되지 않는 모델

덜 일반적인 작업을 사용하기 위해 컴파일되는 더 복잡한 모델은 변환이 지원되지 않을 때가 있습니다. 브라우저 기반 버전의 TensorFlow.js는 TensorFlow를 완전히 재작성한 것이며, 따라서 현재는 TensorFlow C++ API에 있는 하위 수준 작업 (수천 개)을 모두 지원하지는 않습니다. 시간이 지나면서 핵심 작업이 성장하고 더 안정화됨에 따라 더 많은 작업이 추가되고 있습니다.

작성 시점을 기준으로 저장된 모델로 내보낼 때 지원되지 않는 작업을 생성하는 TensorFlow Python의 함수 중 하나는 linalg.diag입니다. Python에서 이를 사용하는 (생성되는 결과 연산을 지원하는) 저장된 모델을 변환하려고 하면 아래와 유사한 오류가 표시됩니다.

5df94fc652393e00.png

여기에서 linalg.diag가 이 Codelab을 작성하는 시점에 웹브라우저의 TensorFlow.js에서 지원하지 않는 MatrixDiagV3라는 작업을 생성하기 위해 컴파일한 것을 빨간색으로 강조 표시한 것을 볼 수 있습니다.

필요한 조치

다음 두 가지 옵션이 있습니다.

  1. TensorFlow.js에서 누락된 연산을 구현합니다. 오픈소스 프로젝트이며 새로운 연산과 같은 작업에 참여하는 것을 환영합니다. TensorFlow.js의 새 작업 작성에 관한 가이드 확인하기 이 작업을 처리하는 경우 명령줄 변환기에서 Skip_op_check 플래그를 사용하여 이 오류를 무시하고 어떤 방식으로든 변환을 계속할 수 있습니다 (지원되는 누락된 연산이 있는 TensorFlow.js 빌드의 새 빌드에서 이 작업을 사용할 수 있다고 가정함).
  2. 내보낸 savedmodel 파일에서 지원되지 않는 작업을 생성한 Python 코드의 부분을 확인합니다. 소수의 코드 세트에서는 쉽게 찾을 수 있지만 더 복잡한 모델에서는 상당한 조사가 필요할 수 있습니다. 현재 savedmodel 파일 형식에서 특정 작업을 한 번 생성한 상위 수준 Python 함수 호출을 식별할 수 있는 메서드가 없기 때문입니다. 그러나 위치를 찾으면 지원되는 다른 방법을 사용하도록 변경할 수 있습니다.

8. 축하합니다

수고하셨습니다. 웹브라우저에서 TensorFlow.js를 통해 Python 모델을 사용하는 첫 단계를 완료했습니다.

요약

이 Codelab에서는 다음을 수행하는 방법을 배웠습니다.

  1. Python 기반 TensorFlow를 설치하도록 Linux 환경 설정
  2. Python 'SavedModel' 내보내기
  3. TensorFlow.js 명령줄 변환기 설치
  4. TensorFlow.js 명령줄 변환기를 사용하여 필요한 클라이언트 측 파일 만들기
  5. 생성된 파일을 실제 웹 애플리케이션에서 사용
  6. 변환되지 않는 모델과 향후 전환을 위해 구현해야 하는 모델을 파악합니다.

다음 단계

#MadeWithTFJS를 사용해 만든 모든 결과물을 태그하여 소셜 미디어에 소개되거나 향후 TensorFlow 이벤트에서 소개될 기회를 얻으세요. 여러분이 어떻게 변환하고 브라우저에서 클라이언트 측을 사용하는지 알고 싶습니다!

더 자세히 알아볼 수 있는 추가 TensorFlow.js Codelab

확인할 웹사이트