瀏覽器裡玩機器學習、深度學習

機器學習演算法與Python發表於2022-03-26

大家好,我是章北海
我一直探索更好玩地介紹機器學習,降低學習門檻,用其開發有趣,有價值的應用。之前介紹過很多機器學習應用方面的玩法,比如:gRPC部署訓練好的機器學習模型使用FastAPI構建機器學習API用streamlit快速生成機器學習web應用在Excel裡玩機器學習。←點選直達

最近我在玩 TensorFlow.js ,計劃用它整個活兒。本文就是 TensorFlow.js 的極簡入門。

TensorFlow.js

TensorFlow.js 是一個開源硬體加速 JavaScript 庫,用於訓練和部署機器學習模型。它可以讓我們直接在瀏覽器中訓練和部署機器學習模型的 JavaScript 庫,可以非常靈活地進行 AI 應用的開發:

  • 不需要安裝軟體或驅動(開啟瀏覽器即可使用);

  • 可以通過瀏覽器進行更加方便的人機互動;

  • 可以通過手機瀏覽器,呼叫手機硬體的各種感測器(如:GPS、攝像頭等);

  • 使用者的資料可以無需上傳到伺服器,在本地即可完成所需操作。

TensorFlow.js 主要是由 WebGL 提供能力支援,並提供了一個用於定義模型的高層 API ,以及用於線性代數和自動微分的低階 API 。TensorFlow.js 支援匯入 TensorFlow SavedModels 和 Keras 模型。

TensorFlow.js 的 API 和 Python 裡的 TensorFlow 和 Keras 基本上是對標的。

TensorFlow.js 環境配置

在瀏覽器中載入 TensorFlow.js ,最方便的辦法是在 HTML 中直接引用 TensorFlow.js 釋出的 NPM 包中已經打包安裝好的 JavaScript 程式碼。

<html>
<head>
   <script src="http://unpkg.com/@tensorflow/tfjs/dist/tf.min.js"></script>

也可以在Node.js中使用TensorFlow.js,配置也不算太複雜:

安裝 Node.js npm yarn

Node.js是基於Chrome的JavaScript構建的跨平臺JavaScript執行時環境,npm是Node.js的預設程式包管理器,也是世界上最大的軟體登錄檔。

sudo apt update
sudo apt install nodejs npm

如果已經安裝過node.js,儘量升級到最新版本

# 更新npm :
npm install -g npm

# 更新node版本:
先清除npm快取:
npm cache clean -f

# 然後安裝n模組:
npm install -g n

# 升級node.js到最新穩定版:
n stable

TensorFlow.js的example執行時會用到 Yarn 這裡一併安裝。(不裝也行,npm撐得住)

Yarn就是一個類似於 npm 的包管理工具,主要的優勢在於:速度快、離線模式、版本控制。

坑已經幫大家踩過了,請必按以下方式安裝:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

sudo apt update && sudo apt install yarn

yarn

建立 TensorFlow.js 專案目錄:

$ mkdir tfjs
$ cd tfjs

安裝 TensorFlow.js:

# 初始化專案管理檔案 package.json

$ npm init -y

# 安裝 tfjs 庫,純 JavaScript 版本

$ npm install @tensorflow/tfjs

# 安裝 tfjs-node 庫,C Binding 版本

$ npm install @tensorflow/tfjs-node

# 安裝 tfjs-node-gpu 庫,支援 CUDA GPU 加速
$ npm install @tensorflow/tfjs-node-gpu

確認 Node.js 和 TensorFlow.js 工作正常:

$ node
> require('@tensorflow/tfjs').version
{
    'tfjs-core': '1.3.1',
    'tfjs-data': '1.3.1',
    'tfjs-layers': '1.3.1',
    'tfjs-converter': '1.3.1',
    tfjs: '1.3.1'
}
>

如果你看到了上面的 tfjs-core, tfjs-data, tfjs-layers 和 tfjs-converter 的輸出資訊,那麼就說明環境配置沒有問題了。

然後,在 JavaScript 程式中,通過以下指令,即可引入 TensorFlow.js:

import * as tf from '@tensorflow/tfjs'
console.log(tf.version.tfjs)
// Output: 1.3.1

玩法及Eamples

TensorFlow.js 玩法有一下幾種:

  • 在瀏覽器上執行官方 TensorFlow.js 模型:
    https://www.tensorflow.org/js/models/
  • 轉換 Python 模型:https://www.tensorflow.org/js/tutorials#convert_pretained_models_to_tensorflowjs
  • 使用遷移學習來用你自己的資料自定義模型
    https://www.tensorflow.org/js/tutorials/transfer/what_is_transfer_learning
  • 直接在 JavaScript 中構建和訓練模型https://www.tensorflow.org/js/tutorials

最好的學習資源是TensorFlow.js官方案例:
https://github.com/tensorflow/tfjs-examples

可以直接點選連結直達感受一下TensorFlow.js的魅力

也可以clone整個專案,cd到示例資料夾:

#如果你在用yarn:

cd iris
yarn
yarn watch
#如果你在用npm:

cd iris
npm install
npm run watch

https://storage.googleapis.com/tfjs-examples/iris/dist/index.html

相關文章