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 : Get Started : tf.contrib.learn クイックスタート

Posted on 03/29/2017 by Sales Information

TensorFlow : Get Started : tf.contrib.learn クイックスタート (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 03/18/2017

* 本ページは、TensorFlow の本家サイトの Get Started – tf.contrib.learn Quickstart を翻訳した上で
適宜、補足説明したものです:
    https://www.tensorflow.org/get_started/tflearn
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

序

TensorFlow の高位な機械学習 API (tf.contrib.learn) は様々な機械学習モデルを構成し、トレーニングし、そして評価することを容易にします。このチュートリアルでは、花弁 (petal) とガク片 (sepal) の形状をもとに花の種を予測するために、tf.contrib.learn を使用してニューラルネットワーク分類器を構築しそれをアイリス・データセットで訓練します。コードを書いて次の5つのステップを実行します :

  1. アイリス訓練/テストデータを含む CSV を TensorFlow データセットにロードする
  2. ニューラルネットワーク分類器を構築する
  3. 訓練データを使用してモデルを fit する
  4. モデルの精度を評価する
  5. 新しいサンプルを分類する

 

完全なニューラルネットワーク・ソースコード

これがニューラルネットワーク分類器のための full コードです :

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import os
import urllib

import numpy as np
import tensorflow as tf

# Data sets
IRIS_TRAINING = "iris_training.csv"
IRIS_TRAINING_URL = "http://download.tensorflow.org/data/iris_training.csv"

IRIS_TEST = "iris_test.csv"
IRIS_TEST_URL = "http://download.tensorflow.org/data/iris_test.csv"

def main():
  # If the training and test sets aren't stored locally, download them.
  if not os.path.exists(IRIS_TRAINING):
    raw = urllib.urlopen(IRIS_TRAINING_URL).read()
    with open(IRIS_TRAINING, "w") as f:
      f.write(raw)

  if not os.path.exists(IRIS_TEST):
    raw = urllib.urlopen(IRIS_TEST_URL).read()
    with open(IRIS_TEST, "w") as f:
      f.write(raw)

  # Load datasets.
  training_set = tf.contrib.learn.datasets.base.load_csv_with_header(
      filename=IRIS_TRAINING,
      target_dtype=np.int,
      features_dtype=np.float32)
  test_set = tf.contrib.learn.datasets.base.load_csv_with_header(
      filename=IRIS_TEST,
      target_dtype=np.int,
      features_dtype=np.float32)

  # Specify that all features have real-value data
  feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]

  # Build 3 layer DNN with 10, 20, 10 units respectively.
  classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns,
                                              hidden_units=[10, 20, 10],
                                              n_classes=3,
                                              model_dir="/tmp/iris_model")
  # Define the training inputs
  def get_train_inputs():
    x = tf.constant(training_set.data)
    y = tf.constant(training_set.target)

    return x, y

  # Fit model.
  classifier.fit(input_fn=get_train_inputs, steps=2000)

  # Define the test inputs
  def get_test_inputs():
    x = tf.constant(test_set.data)
    y = tf.constant(test_set.target)

    return x, y

  # Evaluate accuracy.
  accuracy_score = classifier.evaluate(input_fn=get_test_inputs,
                                       steps=1)["accuracy"]

  print("\nTest Accuracy: {0:f}\n".format(accuracy_score))

  # Classify two new flower samples.
  def new_samples():
    return np.array(
      [[6.4, 3.2, 4.5, 1.5],
       [5.8, 3.1, 5.0, 1.7]], dtype=np.float32)

  predictions = list(classifier.predict(input_fn=new_samples))

  print(
      "New Samples, Class Predictions:    {}\n"
      .format(predictions))

if __name__ == "__main__":
    main()

次のセクションでコードを詳細に通り抜けます。

 

アイリス CSV データを TensorFlow にロードする

アイリス・データセットは 150 行のデータを含み、3つの関連アイリス種 : アイリス・セトサ (setosa)、アイリス・バージニカ (virginica)、アイリス・バージカラー (versicolor) のそれぞれから 50 サンプルから成ります。

左から右へ、アイリス・セトサ (by Radomil, CC BY-SA 3.0)、アイリス・バージカラー (by Dlanglois, CC BY-SA 3.0)、そしてアイリス・バージニカ (by Frank Mayfield, CC BY-SA 2.0) です。

各行は各花のサンプルのための次のデータを含みます : がく片長さ、がく片幅、花弁長さ、花弁幅、そして花の種。花の種は整数で表され、0 はアイリス・セトサを示し、1 はアイリス・バージカラーを示し、そして 2 はアイリス・バージニカを示します。

がく片長さ

がく片幅

花弁長さ

花弁幅

種

5.1

3.5

1.4

0.2

0

4.9

3.0

1.4

0.2

0

4.7

3.2

1.3

0.2

0

…

…

…

…

…

7.0

3.2

4.7

1.4

1

6.4

3.2

4.5

1.5

1

6.9

3.1

4.9

1.5

1

…

…

…

…

…

6.5

3.0

5.2

2.0

2

6.2

3.4

5.4

2.3

2

5.9

3.0

5.1

1.8

2

このチュートリアルのために、アイリス・データは無作為に2つの別の CSV に分割されます :

  • 120 サンプルの訓練セット ( iris_training.csv )
  • 30 サンプルのテストセット ( iris_test.csv ).

始めるには、最初に全ての必要なモジュールをインポートして、データセットをどこにダウンロードしてストアするかを定義します :

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import os
import urllib

import tensorflow as tf
import numpy as np

IRIS_TRAINING = "iris_training.csv"
IRIS_TRAINING_URL = "http://download.tensorflow.org/data/iris_training.csv"

IRIS_TEST = "iris_test.csv"
IRIS_TEST_URL = "http://download.tensorflow.org/data/iris_test.csv"

そして、訓練とテストセットがまだローカルに保持されていないならば、ダウンロードします。

if not os.path.exists(IRIS_TRAINING):
  raw = urllib.urlopen(IRIS_TRAINING_URL).read()
  with open(IRIS_TRAINING,'w') as f:
    f.write(raw)

if not os.path.exists(IRIS_TEST):
  raw = urllib.urlopen(IRIS_TEST_URL).read()
  with open(IRIS_TEST,'w') as f:
    f.write(raw)

次に、訓練とテストセットを learn.datasets.base の load_csv_with_header() メソッドを使用してデータセットにロードします。load_csv_with_header() は3つの必要な引数を取ります :

  • filename, これは CSV ファイルへのファイルパスを取ります。
  • target_dtype, これはデータセットの目標値 (target value) の numpy データ型を取ります。
  • features_dtype, これはデータセットの特徴値 (feature values) の numpy データ型を取ります。

ここで、目標 (target, モデルを訓練して予測するための値) は花の種で、これは 0-2 の整数ですから、妥当な numpy データ型は np.int です :

# Load datasets.
training_set = tf.contrib.learn.datasets.base.load_csv_with_header(
    filename=IRIS_TRAINING,
    target_dtype=np.int,
    features_dtype=np.float32)
test_set = tf.contrib.learn.datasets.base.load_csv_with_header(
    filename=IRIS_TEST,
    target_dtype=np.int,
    features_dtype=np.float32)

tf.contrib.learn のデータセットは named tuples (名前付きタプル) です; データと目標 (target) フィールドを通して特徴データと目標値にアクセスできます。ここで、training_set.data と training_set.target はトレーニングセットのための特徴データと目標値をそれぞれ含み、そして test_set.data と test_set.target はテストセットのための特徴データと目標値を含みます。

後で、”DNNClassifier をアイリス訓練データに fit させる” でモデルを訓練するために training_set.data と training_set.target を使用して、そして “モデル精度を評価する” では test_set.data と test_set.target を使用します。しかしまずは、次のセクションでモデルを構築します。

 

深層ニューラルネットワーク分類器を構築する

tf.contrib.learn は Estimator と呼ばれる、事前定義されたモデルを各種提供しています、これは貴方のデータ上で訓練と評価演算を実行するために “枠にとらわれない (out of the box)” モデルとして使用できます。 ここで、アイリス・データに fit させるために深層ニューラルネットワーク分類器モデルを構成します。tf.contrib.learn を使用して、2、3行のコードで tf.contrib.learn.DNNClassifier をインスタンス化できます :

# Specify that all features have real-value data
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]

# Build 3 layer DNN with 10, 20, 10 units respectively.
classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns,
                                            hidden_units=[10, 20, 10],
                                            n_classes=3,
                                            model_dir="/tmp/iris_model")

上のコードは最初にモデルの特徴カラムを定義します、これはデータセットの特徴のためのデータ型を指定します。全ての特徴データは連続的ですので、特徴カラムを構成するために使用するのに tf.contrib.layers.real_valued_column が適当な関数になります。データセット (ガク片幅、ガク片長さ、花弁幅、花弁高さ (height)) には4つの特徴があり、従って全てのデータを保持するためには次元は 4 でなければなりません。

それから、コードは次の引数を使用して DNNClassifier モデルを作成します :

  • feature_columns=feature_columns. 上で定義された特徴カラムのセット。
  • hidden_units=[10, 20, 10]. 3つの 隠れ層 で、10, 20, そして 10 ニューロンをそれぞれ含みます。
  • n_classes=3. 3つの目標クラスで、3つのアイリス種を表します。
  • model_dir=/tmp/iris_model. モデル訓練の間に TensorFlow が checkpoint データをセーブするディレクトリ。TensorFlow で更にロギングとモニタリングのためには、Logging and Monitoring Basics with tf.contrib.learn を参照してください。

 

訓練入力パイプラインを記述する

tf.contrib.learn API は入力関数を使用し、これはモデルのためのデータを生成する TensorFlow 演算を作成します。この場合は、データは tf.constant TensorFlow 定数にストアできるほどに小さいです。次のコードは最も単純な可能な入力パイプラインを生成します :

# Define the test inputs
def get_train_inputs():
  x = tf.constant(training_set.data)
  y = tf.constant(training_set.target)

  return x, y

 

DNNClassifier をアイリス訓練データに fit させる

DNN classifier モデルを構成した今、fit メソッドを使用してそれをアイリス訓練データに fit させることができます。input_fn として get_train_inputs と、訓練のためのステップ数 (ここでは、2000) を渡します :

# Fit model.
classifier.fit(input_fn=get_train_inputs, steps=2000)

モデルの状態は classifier に保持されます、これは望むならば繰り返し訓練できることを意味します。例えば、上は次と同値です :

classifier.fit(x=training_set.data, y=training_set.target, steps=1000)
classifier.fit(x=training_set.data, y=training_set.target, steps=1000)

けれども、訓練の間モデルを追跡することに目を向けるならば、代わりにロギング演算を実行するために TensorFlow モニタを使用することを望むでしょう。このトピックについての詳細はチュートリアル “Logging and Monitoring Basics with tf.contrib.learn” を参照してください。

 

モデル精度を評価する

アイリス訓練データで DNNClassifier モデルを fit させました ; 今、evaluate メソッドを使用してアイリス・テストデータでその精度を確認できます。fit のように、evaluate は入力パイプラインを構築する入力関数を取ります。evaluate は評価結果とともに dict を返します。次のコードはアイリス・テストデータ —test_set.data とtest_set.target— を結果からの精度を評価して表示するために渡します :

# Define the test inputs
def get_test_inputs():
  x = tf.constant(test_set.data)
  y = tf.constant(test_set.target)

  return x, y

# Evaluate accuracy.
accuracy_score = classifier.evaluate(input_fn=get_test_inputs,
                                     steps=1)["accuracy"]

print("\nTest Accuracy: {0:f}\n".format(accuracy_score))

[注意] 評価するための steps 引数はここでは重要です。evaluate は通常は入力の終わりに到達するまで実行されます。ファイルのセットに渡り評価するためにはこれは完璧ですが、ここで使用される constants は期待する OutOfRangeError あるいは StopIteration を決して throw しません。

フル・スクリプトを実行した時、次に近いようなものを出力するでしょう :

Test Accuracy: 0.966667

精度結果は様々かもしれませんが、90% より高くなるべきです。比較的小さいデータセットに対しては悪くありません!

 

新しいサンプルを分類する

新しいサンプルを分類するためには estimator の predict メソッドを使用します。例えば、これら2つの新しい花のサンプルがあるとします :

がく片長さ

がく片幅

花弁長

花弁幅

6.4

3.2

4.5

1.5

5.8

3.1

5.0

1.7

predict() メソッドを使用してこれらの種を予測できます。predict は generator を返し、これは簡単にリストに変換されます。次のコードはクラス予測を取得して出力します :

# Classify two new flower samples.
def new_samples():
  return np.array(
    [[6.4, 3.2, 4.5, 1.5],
     [5.8, 3.1, 5.0, 1.7]], dtype=np.float32)

predictions = list(classifier.predict(input_fn=new_samples))

print(
    "New Samples, Class Predictions:    {}\n"
    .format(predictions))

結果は次のように見れるはずです :

New Samples, Class Predictions:    [1 2]

モデルはこうして最初のサンプルはアイリス・バージカラーであることを、そして2つ目のサンプルはアイリス・バージニカであることを予測します。

 

以上

クラスキャット

最近の投稿

  • LangGraph 0.5 on Colab : Get started : クイックスタート
  • LangGraph on Colab : SQL エージェントの構築
  • LangGraph on Colab : マルチエージェント・スーパーバイザー
  • LangGraph on Colab : エージェント型 RAG
  • LangGraph : 例題 : エージェント型 RAG

タグ

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年3月
月 火 水 木 金 土 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 2月   4月 »
© 2025 ClasCat® AI Research | Powered by Minimalist Blog WordPress Theme