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

TensorFlow Hub : キーコンセプト

Posted on 04/09/2018 by Sales Information

TensorFlow Hub : キーコンセプト (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
再作成日時 : 04/09/2018

* 本ページは、TensorFlow の本家サイトの Hub – Key Concepts 3編を翻訳した上で適宜、補足説明したものです:

  • Using a Module
  • Creating a New Module
  • Fine-Tuning

* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

モジュールを利用する

モジュールをインスタンス化する

TensorFlow Hub モジュールはモジュール・オブジェクトをその URL かファイルシステム・パスの文字列で作成することにより TensorFlow プログラムにインポートされます、次のようにです :

m = hub.Module("path/to/a/module_dir")

これはモジュール変数を現在の TensorFlow グラフに追加します。それらの initializer の実行は事前訓練された変数をディスクから読むでしょう。同様に、テーブルと他の状態がグラフに追加されます。

 

モジュールをキャッシュする

URL からモジュールを作成するとき、モジュールのコンテンツはローカルシステムの一時ディレクトリにダウンロードされてキャシュされます。モジュールがキャッシュされる位置は TFHUB_CACHE_DIR 環境変数を使用して override されます。

例えば、TFHUB_CACHE_DIR を /my_module_cache に設定して :

$ export TFHUB_CACHE_DIR=/my_module_cache

そしてそれから URL からモジュールを作成すると :

m = hub.Module("https://tfhub.dev/google/progan-128/1")

モジュールを /my_module_cache にダウンロードしてアンパックする結果になります。

 

モジュールを適用する

ひとたびインスタンス化されれば、モジュール m は tensor 入力から tensor 出力への Python 関数のようにゼロかそれ以上の回数呼び出すことができます :

y = m(x)

各々のそのような呼び出しは現在の TensorFlow グラフに x から y を計算する演算を追加します。もしこれが訓練された重みを持つ変数を伴うのであれば、これらは総てのアプリケーション間で共有されます。

モジュールは一つ以上の方法で適用されることを可能にするためにマルチに命名されたシグネチャを定義できます (Python オブジェクトがどのようにメソッドを持つかに類似しています)。モジュールのドキュメントは利用可能なシグネチャを記述するべきです。上の呼び出しは “default” と命名されたシグネチャを適用します。任意のシグネチャはその名前をオプションの signature= 引数へ渡すことにより選択できます。

もしシグネチャが複数の入力を持つのであれば、それらはシグネチャにより定義されたキーとともに、それらは dict (辞書) として渡されなければなりません。同様に、シグネチャが複数の出力を持つのであれば、シグネチャで定義されたキー下で、 それらは as_dict=True を渡すことにより辞書として取得可能です。(キー “default” は as_dict=False の場合には単一の出力が返されます。) そのためモジュールを適用する最も一般的な形式は次のようなものです :

outputs = m(dict(apples=x1, oranges=x2), signature="fruit_to_pet", as_dict=True)
y1 = outputs["cats"]
y2 = outputs["dogs"]

呼び出し元はシグネチャで定義された総ての入力を供給しなければなりませんが、モジュールの総ての出力を使用する必要はありません。TensorFlow は tf.Session.run() でターゲット依存となるモジュールのそれらのパーツだけを実行するでしょう。実際に、モジュール公開者 (= publisher) は (中間層の活性のように) 主要な出力に沿ってより進んだ利用のために様々な出力を提供することを選択可能です。モジュール消費者 (= consumer) は追加の出力を優美に処理するべきです。

 

新しいモジュールを作成する

一般的なアプローチ

新しいモジュールを定義するためには、公開者は関数 module_fn とともに hub.create_module_spec() を呼び出します。この関数は、呼び出し元から供給される入力のために tf.placeholder() を使用してモジュールの内部構造を表わすグラフを構築します。それからそれは、hub.add_signature(name, inputs, outputs) を 1 回またはそれ以上の回数呼び出してシグネチャを定義します。

例えば :

def module_fn():
  inputs = tf.placeholder(dtype=tf.float32, shape=[None, 50])
  layer1 = tf.layers.fully_connected(inputs, 200)
  layer2 = tf.layers.fully_connected(layer1, 100)
  outputs = dict(default=layer2, hidden_activations=layer1)
  # Add default signature.
  hub.add_signature(inputs=inputs, outputs=outputs)

...
spec = hub.create_module_spec(module_fn)

hub.create_module_spec() の結果は、パスの代わりに、特定の TensorFlow グラフ内でモジュール・オブジェクトをインスタンス化するために使用できます。そのようなケースでは、チェックポイントはなく、そしてモジュール・インスタンスは変数 initializer を代わりに使用するでしょう。

任意のモジュール・インスタンスはその export(path, session) メソッドを通してディスクにシリアライズできます。モジュールのエクスポートはその定義をセッションのその変数の現在の状態と一緒に渡されたパスにシリアライズします。これは最初にモジュールをエクスポートするとき及び再調整されたモジュールをエクスポートするときに使用可能です。

TensorFlow Estimator との互換性のために、丁度 tf.estimator.LatestExporter がモデル全体を最新のチェックポイントからエクスポートするように、hub.LatestModuleExporter はモジュールを最新のチェックポイントからエクスポートします。

モジュール公開者は可能なときには 一般的なシグネチャ を実装するべきです、これは消費者が簡単にモジュールを取り替えて彼らの問題に最善の一つを見つけることを可能にするためです。

 

実際のサンプル

一般的なテキスト埋め込みフォーマットからどのようにモジュールを作成するかの実際の例のための私達の テキスト埋め込みモジュール・エクスポーター を見てください。

 

再調整

インポートされたモジュールの変数をそれの回りのモジュールのそれらと一緒に訓練することは再調整 (= fine-tuning) と呼ばれます。再調整はより良い品質の結果になり得ますが、新しい複雑さを追加します。消費者にはより単純な品質調整の探究の後に初めて再調整を調べることを推奨します。

 

消費者 (= Consumers) のために

再調整を有効にするには、モジュールをその変数を訓練可能にして TensorFlow の REGULARIZATION_LOSSES をインポートするために hub.Module(…, trainable=True) でインスタンス化します。モジュールが複数のグラフ・バリアントを持つ場合には、訓練のために適切な一つを確実に選択してください。通常は、それはタグ {“train”} を持つ一つです。

事前訓練された重みを台無しにしないように訓練体制を選択してください、例えば、スクラッチからの訓練のためのものよりより低い学習率です。

 

公開者 (= Publisher) のために

消費者に対して再調整をより簡単にするために、次について留意してください :

  • 再調整は正則化を必要とします。貴方のモジュールは REGULARIZATION_LOSSES コレクションでエクスポートされ、これは tf.layers.dense(…, kernel_regularizer=…) etc. の貴方の選択を消費者が tf.losses.get_regularization_losses() から得るものへと配置するものです。L1/L2 正則化損失を定義するこの方法が好ましいです。
  • 公開者モデルでは、tf.train.FtrlOptimizer の l1_ と l2_regularization_strength パラメータ、tf.train.ProximalGradientDescentOptimize、そして他の近い方の optimizer を通して L1/L2 regularization を定義することを回避します。これらはモジュールと一緒にエクスポートされず、正則化の強さの設定は消費者に対しては全体的には適切ではないかもしれません。wide (i.e. 疎線形) または wide & deep モデルの L1 正則化のため以外では、個々の正則化損失を代わりに使用するが可能です。
  • ドロップアウト、バッチ正規化、または同様の訓練テクニックを使用する場合、ドロップアウト率と他のハイパーパラメータを多くの期待される利用方法に渡り意味を持つ値に設定してください。
 

以上


クラスキャット

最近の投稿

  • Agno : コンセプト : ツール – Human in the loop
  • Agno : コンセプト : ツール – 例外, フック
  • Agno : コンセプト : ツール – 概要 / 独自ツールの作成
  • Agno : コンセプト : モデル – 概要, OpenAI, Anthropic Claude
  • Agno : コンセプト : チーム – チームモード : コラボレーション

タグ

Agno (27) 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) LangGraph 0.5 (9) 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 Probability (9) TensorFlow Programmer's Guide (22) TensorFlow Release Note (18) TensorFlow Tutorials (33) TF-Agents 0.4 (11)
2018年4月
月 火 水 木 金 土 日
 1
2345678
9101112131415
16171819202122
23242526272829
30  
« 3月   5月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme