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 : (r1.0) Programmer’s Guide : 変数: 作成、初期化、保存そしてロード

Posted on 02/09/2016 by Sales Information

TensorFlow : (r1.0) Programmer’s Guide : 変数: 作成、初期化、保存そしてロード (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
更新日時 : 09/10/2017; 04/27/2017
作成日時 : 02/09/2016

* 本家サイトのドキュメント構成の変更に伴い、本ページは以下のページをベースにするよう変更しました (09/10/2017) :

  • https://www.tensorflow.org/versions/r1.0/programmers_guide/variables

* (obsolete) 本家サイトのドキュメント構成の変更に伴い、本ページは以下のページをベースにするよう変更し、
また原文の加筆や変更に合わせて翻訳文も更新しました (04/26/2017) :
    https://www.tensorflow.org/programmers_guide/variables
* (obsolete) 本ページは、TensorFlow の本家サイトの How To – Variables: Creation, Initialization, Saving, and Loading を翻訳した上で適宜、補足説明したものです:
    (リンク切れ) https://www.tensorflow.org/versions/master/how_tos/variables/index.html
* サンプルコードの動作確認はしておりますが、適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 
本文

モデルを訓練する時、パラメータを保持し更新するために variables(変数) を使用します。変数は in-memory なバッファでテンソルを含んでます。それらは明示的に初期化されなければならず、訓練中と訓練後にディスクに保存されることが可能です。モデルを実行するか解析するために貴方は後で保存した値を復元することができます。

この文書は以下の TensorFlow クラスを参照します。これらの API の完全な記述はリファレンス・マニュアルへのリンクを辿ってください:

  • tf.Variable クラス
  • tf.train.Saver クラス
 

作成

変数を作成する時、Variable() コンストラクタにその初期値としてテンソルを渡します。TensorFlow は、定数やランダム値から初期化のためにしばしば使用される、テンソルを生成する OP(演算) のコレクションを提供します。

全てのこれらの OP はテンソルの shape を指定することを要求することに注意してください。その shape は自動的に変数の shape となります。変数は通常は固定された shape を持ちますが、TensorFlow は変数を reshape するためのより進んだメカニズムを提供しています。

# 2つの変数を作成する。
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),
                      name="weights")
biases = tf.Variable(tf.zeros([200]), name="biases")

tf.Variable() の呼び出しは幾つかの OP をグラフに追加します :

  • 変数値を保持する変数 OP。
  • 変数をその初期値に設定する initializer OP。これは実際には tf.assign OP です。
  • 例えば例の biases 変数のための zeros OP のような、初期値のための OP もまたグラフに追加されます。

tf.Variable() により返される値は Python クラス tf.Variable のインスタンスです。

デバイス配置

変数はそれが作成された時、with tf.device(…): ブロック を使用して特定のデバイスにピンで留められます (固定されます)。

# 変数を CPU にピンで留める :
with tf.device("/cpu:0"):
  v = tf.Variable(...)

# 変数を GPU にピンで留めます :
with tf.device("/gpu:0"):
  v = tf.Variable(...)

# 変数を特定のパラメータサーバ・タスクにピンで留めます。
with tf.device("/job:ps/task:7"):
  v = tf.Variable(...)

【備考】
tf.Variable.assign のような変数を変化させる (mutate) 演算と tf.train.Optimizer 内のパラメータ更新演算は変数として同じデバイスで実行されなければなりません。これらの演算を作成する時、非互換なデバイス配置命令は無視されます。

デバイス配置は複製された (replicated) 設定で実行される時には特に重要です。複製されたモデルのためのデバイスの構成を単純化するデバイス関数の詳細については tf.train.replica_device_setter を見てください。

 

初期化

変数 initializer(初期化演算子)は貴方のモデルの他の OP が実行可能となる前に明示的に実行される必要があります。それを行なう最も簡単な方法は全ての変数 initializer を実行する OP を追加してその OP をモデルを使用する前に実行することです。

あるいは貴方はチェックポイント・ファイルから変数値を復元することもできます、下を見てください。

変数 initializer を実行する OP を追加するには tf.global_variables_initializer() を使用します。
貴方が完全にモデルを構築し終わってセッションでそれを launch した後にだけ、この OP を実行します。

#  2つの変数を作成します。
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),
                      name="weights")
biases = tf.Variable(tf.zeros([200]), name="biases")
...
# 変数を初期化するための OP を追加します。
init_op = tf.global_variables_initializer()

# 後は、モデルを launch する時
with tf.Session() as sess:
  # init 操作を実行します。
  sess.run(init_op)
  ...
  # モデルを使用します。
  ...

他の変数からの初期化

時には変数を他の変数の初期値から初期化する必要があることでしょう。tf.global_variables_initializer() により追加される OP は全ての変数を平行して初期化するため、これが必要な時には注意しなければなりません。

新しい変数を他の変数の値から初期化するためには他の変数の initialized_value() プロパティを使用します。初期化された値を新しい変数の初期値として直接使うことができますし、あるいはそれを新しい変数のための値を計算するための任意の他のテンソルとして使用することもできます。

# ランダム値で変数を作成します。
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),
                      name="weights")
# 他の変数を 'weights' と同じ値で作成します。
w2 = tf.Variable(weights.initialized_value(), name="w2")
# 他の変数を 'weights' の2倍の値で作成します。
w_twice = tf.Variable(weights.initialized_value() * 2.0, name="w_twice")

カスタマイズされた初期化 (Custom Initialization)

簡易 (convenience) 関数 tf.global_variables_initializer() はモデルの全ての変数を初期化するための OP を追加します。貴方はまた初期化する変数の明示的なリストをそれに渡すこともできます。変数が初期化されたかをチェックすることを含む、更なるオプションについては Variables Documentation を参照してください。

 

保存と復元

モデルの保存と復元をする最も簡単な方法は tf.train.Saver オブジェクトを使うことです。コンストラクタはグラフの全ての、または指定したリストの変数のための保存と復元 OP をグラフに追加します。saver オブジェクトは、読み書きするためのチェックポイント・ファイルのパスを指定して、これらの OP を実行するメソッドを提供します。

チェックポイント・ファイル

変数はバイナリ・ファイルに保存され、大雑把に言えば、これは変数名からテンソル値へのマップを含みます。

貴方が Saver オブジェクトを作成する時、オプションとしてチェックポイント・ファイルにおける変数のための名前を選択できます。デフォルトでは、それは各変数について tf.Variable.name プロパティの値を使用します。

どのような変数がチェックポイントにあるのかを理解するためには、inspect_checkpoint ライブラリ、特に print_tensors_in_checkpoint_file 関数を使用することが可能です。

変数を保存する

モデルの全ての変数を管理するための Saver を tf.train.Saver() で作成します。

# 幾つか変数を作成します。
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
...
# 変数を初期化するための OP を追加します。
init_op = tf.global_variables_initializer()

# 全ての変数を保存して復元するための OP を追加します。
saver = tf.train.Saver()

# 後は、モデルを launch し、変数を初期化し、何かの作業をして、変数をディスクに保存します。
with tf.Session() as sess:
  sess.run(init_op)
  # モデルで何某かの作業をします。
  ..
  # 変数をディスクに保存します。
  save_path = saver.save(sess, "/tmp/model.ckpt")
  print("Model saved in file: %s" % save_path)

変数を復元する

同じ Saver オブジェクトが変数の復元のために使用されます。ファイルから変数を復元する時は前もってそれらを初期化する必要はありませんので注意してください。

# 幾つか変数を作成します。
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
...
# 全ての変数を保存して復旧するための OP を追加します。
saver = tf.train.Saver()

# 後は、モデルを launch し、saver を使ってディスクから変数を復元し、そしてモデルで何かの作業をします。
with tf.Session() as sess:
  # ディスクから変数を復元します。
  saver.restore(sess, "/tmp/model.ckpt")
  print("Model restored.")
  # モデルで何某かの作業をします。 
  ...

保存し復元する変数を選択する

tf.train.Saver() にどのような引数も渡さない場合には saver はグラフの全ての変数を扱います。それらの各々は変数が作成される時渡された名前の下に保存されます。

時にチェックポイント・ファイルの変数の名前を明示的に指定することは有用です。例えば、”weights” という名前の変数でモデルを訓練したとして、貴方はこの値を “params” という名前の新しい変数で復元することを望むかもしれません。

またモデルで使用される変数のサブセットだけを保存し復元することも時に有用です。例えば、貴方は 5 層でニューラルネットを訓練したとして、今貴方は 、以前に訓練した 5 層のモデルから新しいモデルの最初の 5 層へとパラメータを復元し、6 層の新しいモデルで訓練することを望むかもしれません。

tf.train.Saver() コンストラクタに Python 辞書を渡すことにより保存するための名前と変数を簡単に指定できます : キーは使用する名前、値は管理したい変数です。

注釈:

  • もしモデル変数の異なるサブセットを保存し復元する必要がある場合には、望むだけの数の saver オブジェクトを作成できます。同じ変数は複数の saver オブジェクトでリストされることができ、その値は saver restore() メソッドが実行された時に限り変更されます。
  • セッションの開始時にモデル変数のサブセットを復元するだけなら他の変数のための初期化 OP を実行しなければなりません。更なる情報には tf.variables_initializer を見てください。
    # 幾つか変数を作成します。
    v1 = tf.Variable(..., name="v1")
    v2 = tf.Variable(..., name="v2")
    ...
    # "my_v2" という名前を使って 'v2' だけを保存し復元する OP を追加します。
    saver = tf.train.Saver({"my_v2": v2})
    # Use the saver object normally after that.
    ...
    
 

以上

クラスキャット

最近の投稿

  • LangGraph : 例題 : エージェント型 RAG
  • LangGraph Platform : Get started : クイックスタート
  • LangGraph Platform : 概要
  • LangGraph : Prebuilt エージェント : ユーザインターフェイス
  • LangGraph : Prebuilt エージェント : 配備

タグ

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 (21) 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)
2016年2月
月 火 水 木 金 土 日
1234567
891011121314
15161718192021
22232425262728
29  
« 1月   3月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme