Skip to content

ClasCat® AI Research

クラスキャット – 生成 AI, AI エージェント, MCP

Menu
  • ホーム
    • ClassCat® AI Research ホーム
    • クラスキャット・ホーム
  • OpenAI API
    • OpenAI Python ライブラリ 1.x : 概要
    • OpenAI ブログ
      • GPT の紹介
      • GPT ストアの紹介
      • ChatGPT Team の紹介
    • OpenAI platform 1.x
      • Get Started : イントロダクション
      • Get Started : クイックスタート (Python)
      • Get Started : クイックスタート (Node.js)
      • Get Started : モデル
      • 機能 : 埋め込み
      • 機能 : 埋め込み (ユースケース)
      • ChatGPT : アクション – イントロダクション
      • ChatGPT : アクション – Getting started
      • ChatGPT : アクション – アクション認証
    • OpenAI ヘルプ : ChatGPT
      • ChatGPTとは何ですか?
      • ChatGPT は真実を語っていますか?
      • GPT の作成
      • GPT FAQ
      • GPT vs アシスタント
      • GPT ビルダー
    • OpenAI ヘルプ : ChatGPT > メモリ
      • FAQ
    • OpenAI ヘルプ : GPT ストア
      • 貴方の GPT をフィーチャーする
    • OpenAI Python ライブラリ 0.27 : 概要
    • OpenAI platform
      • Get Started : イントロダクション
      • Get Started : クイックスタート
      • Get Started : モデル
      • ガイド : GPT モデル
      • ガイド : 画像生成 (DALL·E)
      • ガイド : GPT-3.5 Turbo 対応 微調整
      • ガイド : 微調整 1.イントロダクション
      • ガイド : 微調整 2. データセットの準備 / ケーススタディ
      • ガイド : 埋め込み
      • ガイド : 音声テキスト変換
      • ガイド : モデレーション
      • ChatGPT プラグイン : イントロダクション
    • OpenAI Cookbook
      • 概要
      • API 使用方法 : レート制限の操作
      • API 使用方法 : tiktoken でトークンを数える方法
      • GPT : ChatGPT モデルへの入力をフォーマットする方法
      • GPT : 補完をストリームする方法
      • GPT : 大規模言語モデルを扱う方法
      • 埋め込み : 埋め込みの取得
      • GPT-3 の微調整 : 分類サンプルの微調整
      • DALL-E : DALL·E で 画像を生成して編集する方法
      • DALL·E と Segment Anything で動的マスクを作成する方法
      • Whisper プロンプティング・ガイド
  • Gemini API
    • Tutorials : クイックスタート with Python (1) テキスト-to-テキスト生成
    • (2) マルチモーダル入力 / 日本語チャット
    • (3) 埋め込みの使用
    • (4) 高度なユースケース
    • クイックスタート with Node.js
    • クイックスタート with Dart or Flutter (1) 日本語動作確認
    • Gemma
      • 概要 (README)
      • Tutorials : サンプリング
      • Tutorials : KerasNLP による Getting Started
  • Keras 3
    • 新しいマルチバックエンド Keras
    • Keras 3 について
    • Getting Started : エンジニアのための Keras 入門
    • Google Colab 上のインストールと Stable Diffusion デモ
    • コンピュータビジョン – ゼロからの画像分類
    • コンピュータビジョン – 単純な MNIST convnet
    • コンピュータビジョン – EfficientNet を使用した微調整による画像分類
    • コンピュータビジョン – Vision Transformer による画像分類
    • コンピュータビジョン – 最新の MLPモデルによる画像分類
    • コンピュータビジョン – コンパクトな畳込み Transformer
    • Keras Core
      • Keras Core 0.1
        • 新しいマルチバックエンド Keras (README)
        • Keras for TensorFlow, JAX, & PyTorch
        • 開発者ガイド : Getting started with Keras Core
        • 開発者ガイド : 関数型 API
        • 開発者ガイド : シーケンシャル・モデル
        • 開発者ガイド : サブクラス化で新しい層とモデルを作成する
        • 開発者ガイド : 独自のコールバックを書く
      • Keras Core 0.1.1 & 0.1.2 : リリースノート
      • 開発者ガイド
      • Code examples
      • Keras Stable Diffusion
        • 概要
        • 基本的な使い方 (テキスト-to-画像 / 画像-to-画像変換)
        • 混合精度のパフォーマンス
        • インペインティングの簡易アプリケーション
        • (参考) KerasCV – Stable Diffusion を使用した高性能画像生成
  • TensorFlow
    • TF 2 : 初級チュートリアル
    • TF 2 : 上級チュートリアル
    • TF 2 : ガイド
    • TF 1 : チュートリアル
    • TF 1 : ガイド
  • その他
    • 🦜️🔗 LangChain ドキュメント / ユースケース
    • Stable Diffusion WebUI
      • Google Colab で Stable Diffusion WebUI 入門
      • HuggingFace モデル / VAE の導入
      • LoRA の利用
    • Diffusion Models / 拡散モデル
  • クラスキャット
    • 会社案内
    • お問合せ
    • Facebook
    • ClassCat® Blog
Menu

deeplearn.js : チュートリアル : TensorFlow モデルの移植

Posted on 08/23/2017 by Sales Information

deeplearn.js : チュートリアル : TensorFlow モデルの移植

作成 : (株)クラスキャット セールスインフォメーション
日時 : 08/23/2017

* 本ページは、github.io の deeplearn.js サイトの Tutorials – Port TensorFlow models を翻訳した上で
適宜、補足説明したものです:

  • https://pair-code.github.io/deeplearnjs/demos/mnist/mnist.html

* サンプルコードの動作確認はしておりますが、適宜、追加改変している場合もあります。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

本文

このチュートリアルでは訓練と TensorFlow モデルの deeplearn.js への移植をデモします。このチュートリアルで使用されるコードとすべての必要なリソースは demos/mnist にストアされています。

(訳注: 画像はデモ実行時のブラウザ画面のスナップショットです)


MNIST データセットから手書き数字を予想する完全結合ニューラルネットワークを使用します。コードは公式 TensorFlow MNIST チュートリアル から fork されています。

NOTE : deeplearn.js repo のベース・ディレクトリを $BASE として参照します。

最初に、deeplearn.js レポジトリを clone して TensorFlow がインストールされていることを確認します。$BASE 内に cd して以下を実行することでモデルを訓練します :

python demos/mnist/fully_connected_feed.py

訓練は ~1 分かかりそしてモデル・チェックポイントを /tmp/tensorflow/mnist/tensorflow/mnist/logs/fully_connected_feed/ にストアするでしょう。

次に、TensorFlow チェックポイントから deeplearn.js へ重みを移植する必要があります。これを行なうスクリプトを提供しています。それを $BASE ディレクトリから実行します :

python scripts/dump_checkpoint_vars.py --output_dir=demos/mnist/ \
  --checkpoint_file=/tmp/tensorflow/mnist/logs/fully_connected_feed/model.ckpt-1999

(訳注: 以下は dump_checkpoint_vars.py 実行時のコンソールログです : )

Writing variable softmax_linear/biases...
Writing variable softmax_linear/weights...
Writing variable hidden2/weights...
Writing variable hidden1/weights...
Writing variable hidden2/biases...
Writing variable hidden1/biases...
Ignoring global_step
Writing manifest to demos/mnist/manifest.json
Done!

スクリプトはファイルのセット (variable 毎に一つのファイル、そして manifest.json) を demos/mnist ディレクトリに保存します。manifest.json は単なる辞書で variable 名をファイルにそして shape を map します :

{
  ...,
  "hidden1/weights": {
    "filename": "hidden1_weights",
    "shape": [784, 128]
  },
  ...
}

コーディングを開始する前の最後の一つのこと – $BASE ディレクトリから静的 HTTP サーバを実行する必要があります :

npm run prep
./node_modules/.bin/http-server
>> Starting up http-server, serving ./
>> Available on:
>>   http://127.0.0.1:8080
>> Hit CTRL-C to stop the server

ブラウザで http://localhost:8080/demos/mnist/manifest.json を見ることにより HTTP 経由で manifest.json にアクセスできることを確認してください。

幾つかの deeplearn.js コードを書くための準備ができました!

NOTE : TypeScript で書くことを選択した場合、コードを JavaScript にコンパイルして静的 HTTP サーバ経由でそれをサーブすることを確認しましょう。

重みを読みためには、CheckpointLoader を作成してそれが manifest ファイルを指すようにする必要があります。そして loader.getAllVariables() を呼び出します、これは variable 名を NDArray にマップする辞書を返します。その時点で、私たちのモデルを書く準備ができます。CheckpointLoader の使用方法を示すスニペットがここにあります :

import {CheckpointLoader, Graph} from 'deeplearnjs';
// manifest.json is in the same dir as index.html.
const reader = new CheckpointReader('.');  // 訳注: 原文のコード行は誤り、正しくは new CheckpointLoader('.');
reader.getAllVariables().then(vars => {
  // Write your model here.
  const g = new Graph();
  const input = g.placeholder('input', [784]);
  const hidden1W = g.constant(vars['hidden1/weights']);
  const hidden1B = g.constant(vars['hidden1/biases']);
  const hidden1 = g.relu(g.add(g.matmul(input, hidden1W), hidden1B));
  ...
  ...
  const math = new NDArrayMathGPU();
  const sess = new Session(g, math);
  math.scope(() => {
    const result = sess.eval(...);
    console.log(result.getValues());
  });
});

完全なモデル・コードについての詳細は demos/mnist/mnist.ts を見てください。デモは、3つの異なる API を使用する MNIST モデルの正確な実装を提供します :

  • buildModelGraphAPI() は Graph API を使用します、これは TensorFlow API を模倣していて、feed と fetch による遅延実行 (lazy execution) を提供します。ユーザは入力データ以外の GPU 関連のメモリリークを心配する必要はありません。
  • buildModelLayerAPI() は Graph.layers と連動する Graph API を使用します、これは Keras layers API を模倣しています。
  • buildModelMathAPI() は Math API を使用します。これは deeplearn.js の低位 API でユーザに最大限の制御を与えます。Math コマンドは直ちに実行されます、numpy のように。Math コマンドは math.scope() でラップされその結果、中間的な math コマンドで作成された NDArray は自動的にクリーンアップされます。

mnist デモを実行するために、watch-demo スクリプトを提供しています、これは typescript コードを監視してそれが変更された時にリコンパイルします。更に、スクリプトは単純な HTTP サーバを 8080 上で実行します、これは静的な html/js ファイルをサーブします。watch-demo を実行する前に、チュートリアルの前の方で起動した HTTP サーバを 8080 ポートを開放するために必ず kill してください。それから $BASE から web app デモのエントリ・ポイント、demos/mnist/mnist.ts を指すように watch-demo を実行します :

./scripts/watch-demo demos/mnist/mnist.ts
>> Starting up http-server, serving ./
>> Available on:
>>   http://127.0.0.1:8080
>>   http://192.168.1.5:8080
>> Hit CTRL-C to stop the server
>> 1410084 bytes written to demos/mnist/bundle.js (0.91 seconds) at 5:17:45 PM

http://localhost:8080/demos/mnist/ を見てください、demos/mnist/sample_data.json にストアされた 50 mnist 画像のテストセットを使用して計測されたテスト精度 ~90% を示す単純なページを見るはずです。デモで自由に遊んでください (e.g. それを対話的にするとか)、そして pull リクエストを私たちに送ってください!

(訳注 : demos/mnist の実行結果のスナップショットです : )
 

 

以上



クラスキャット

最近の投稿

  • LangGraph 0.5 on Colab : Get started : Tavily Web 検索ツールの追加
  • LangGraph 0.5 on Colab : Get started : カスタム・ワークフローの構築
  • LangGraph 0.5 on Colab : Get started : クイックスタート
  • LangGraph on Colab : SQL エージェントの構築
  • LangGraph on Colab : マルチエージェント・スーパーバイザー

タグ

AutoGen (13) ClassCat Press Release (20) ClassCat TF/ONNX Hub (11) DGL 0.5 (14) Eager Execution (7) Edward (17) FLUX.1 (16) Gemini (20) HuggingFace Transformers 4.5 (10) HuggingFace Transformers 4.6 (7) HuggingFace Transformers 4.29 (9) Keras 2 Examples (98) Keras 2 Guide (16) Keras 3 (10) Keras Release Note (17) Kubeflow 1.0 (10) LangChain (45) LangGraph (24) MediaPipe 0.8 (11) Model Context Protocol (16) NNI 1.5 (16) OpenAI Agents SDK (8) OpenAI Cookbook (13) OpenAI platform (10) OpenAI platform 1.x (10) OpenAI ヘルプ (8) TensorFlow 2.0 Advanced Tutorials (33) TensorFlow 2.0 Advanced Tutorials (Alpha) (15) TensorFlow 2.0 Advanced Tutorials (Beta) (16) TensorFlow 2.0 Guide (10) TensorFlow 2.0 Guide (Alpha) (16) TensorFlow 2.0 Guide (Beta) (9) TensorFlow 2.0 Release Note (12) TensorFlow 2.0 Tutorials (20) TensorFlow 2.0 Tutorials (Alpha) (14) TensorFlow 2.0 Tutorials (Beta) (12) TensorFlow 2.4 Guide (24) TensorFlow Deploy (8) TensorFlow Get Started (7) TensorFlow Graphics (7) TensorFlow Probability (9) TensorFlow Programmer's Guide (22) TensorFlow Release Note (18) TensorFlow Tutorials (33) TF-Agents 0.4 (11)
2017年8月
月 火 水 木 金 土 日
 123456
78910111213
14151617181920
21222324252627
28293031  
« 7月   9月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme