アルゴリズム取引におけるPython - ページ 22

 

matplotlib を使用した 1 時間でのデータ視覚化



matplotlib を使用した 1 時間でのデータ視覚化

このビデオでは、インストラクターが機械学習におけるデータ視覚化の重要性を紹介し、それが収集された大量のデータを理解するのにどのように役立つかを説明します。このコースでは、データ視覚化のための 2 つの主要な Python ライブラリ、Matplotlib と Seaborn について説明します。

インストラクターは、このコースは主に Python を学習したい機械学習エンジニア、データ エンジニア、データ サイエンティスト向けに設計されていると述べています。 Matplotlib の使用法を説明するために、曲線をプロットする簡単な例を示します。 Matplotlib の哲学は、機械学習モデルの構築とデータ処理の標準となっている既存の言語 Python の活用を中心に展開しています。 Matplotlib を他の Python パッケージと組み合わせることで、ユーザーはさまざまなタスクに利用できる多数のパッケージを利用できます。

このビデオでは、科学計算に Matplotlib と併せて NumPy パッケージを使用することの重要性を強調しています。 Matplotlib は NumPy がなくても動作しますが、NumPy を利用すると時間と労力を大幅に節約できます。 NumPy は、強力な多次元配列オブジェクトとそれを操作するための関数を提供します。ビデオでは例が示されており、NumPy を使用して 100 点の曲線が生成され、x 座標と y 座標が計算されます。このアプローチは、純粋な Python を使用して操作を実行するよりもはるかに高速であることがわかります。さらに、ビデオでは、比較のために同じグラフ上に 2 つの曲線をプロットする方法、Python コードを使用してデータを抽出して整理することによってファイルからデータをプロットする方法、項目の代わりに点を線形にプロットする方法について説明します。

このチュートリアルでは、Matplotlib ライブラリを使用してさまざまな種類の棒グラフを作成する方法について詳しく説明します。棒グラフを作成するための専用関数「bar」が導入されました。この関数は、各棒の x 座標と各棒の高さを入力パラメータとして受け取ります。オプションのパラメータを調整することで、さまざまな効果を作成したり、「barh」機能を使用して水平バーを生成したりすることもできます。このチュートリアルでは、同じグラフ上に複数の棒グラフをプロットする方法と、「bar」関数の特別なパラメータを使用して積み上げ棒を作成する方法も説明します。さらに、ビデオでは、「円」関数を使用した円グラフの作成について簡単に触れています。

Matplotlib を使用したデータ視覚化で使用されるさまざまな関数がチュートリアルで説明されています。最初に取り上げる関数は、確率分布をグラフで表現したヒストグラムです。ユーザーがデータをヒストグラムとして簡単にプロットできるようにする「hist」関数とそのパラメーターについて説明します。 2 番目に取り上げる関数は箱ひげ図で、値の分布の比較を容易にします。このビデオでは、データセットの四分位数、中央値、平均値、統計量などの箱ひげ図のコンポーネントについて説明し、「箱ひげ図」関数を使用してそれらを生成する方法を示します。最後に、このチュートリアルでは、曲線プロットの色の設定だけでなく、3 つ組、4 つ組、または HTML カラー名を使用した色の定義など、さまざまな色やスタイルを使用してプロットを変更する方法について説明します。

ビデオでは、「color」パラメーターを使用して散布図、棒グラフ、円グラフに色を追加する方法を説明します。このパラメータを使用すると、ユーザーは個々のドットの色を制御したり、すべてのドットの共通の色を変更したりできます。このビデオでは、ライブラリをモジュールとしてインポートすること、コーディングを容易にするためのエイリアスの使用、変数の表現の明確化についても触れています。 Matplotlib と Python のほとんどすべてに、「pi」関数や「show」関数などの関数が含まれることが強調されます。

次に、このチュートリアルでは、箱ひげ図、マーカー、線の形状を作成するときのカスタム カラー スキームと線のパターンについて説明します。事前定義された形状を使用したカスタム マーカーの作成と、数学テキスト シンボルを使用したカスタム マーカーの定義を示します。さらに、一元化された構成オブジェクトを使用して Matplotlib のデフォルト設定を簡単に変更する方法についても説明します。これにより、ユーザーは黒の背景と白の注釈などの視覚スタイルをさまざまな使用状況に適応させることができます。

発表者は、Matplotlib の「savefig」関数を使用してグラフをファイルに保存する方法を説明します。また、タイトル、x 軸と y 軸のラベル、境界ボックス、矢印などの注釈をグラフに追加する方法についても説明します。このビデオでは、グラフの視覚的な明瞭さと理解を強化するためにこれらの注釈を追加するプロセスを示しています。さらに、Matplotlib で目盛り間隔を手動で制御して正確に調整する方法を紹介します。このビデオでは、グラフに注釈を付け、読者にとってわかりやすくするために Matplotlib で利用できるさまざまな関数を紹介します。

次に、インストラクターは Matplotlib を使用したデータ視覚化について説明し、Matplotlib への高レベル インターフェイスである Seaborn を紹介します。 Seaborn は、Matplotlib とは異なるパラメーターと機能を提供します。インストラクターは、Seaborn の組み込みデータセットとカラー マップを使用してビジュアライゼーションを作成する方法を紹介します。ビデオは、因子プロットを作成し、カラー マップを利用してデータをプロットする例を示して終わります。これらの例を通じて、視聴者は Matplotlib と Seaborn のさまざまな関数とツールの使用方法について洞察を得ることができ、データ視覚化スキルを向上させることができます。

このビデオでは、Seaborn の「set_context」関数を使用してプロットを拡大縮小する方法を説明しています。この関数を使用すると、ユーザーはプロットが表示されるコンテキストに基づいて、サイズなどのプロット要素を制御できます。次に、Seaborn の 2 種類の関数 (軸レベル関数と図形レベル関数) の区別を明確にします。 Axes レベル関数は軸レベルで動作し、Axes オブジェクトを返します。一方、Figure レベル関数は意味のある方法で編成された Axes を含むプロットを作成します。最後に、ビデオでは、Matplotlib 軸サブプロット オブジェクトを使用して箱ひげ図の軸を設定するためのガイダンスを提供します。

この包括的なビデオ チュートリアルでは、Matplotlib と Seaborn を使用したデータ視覚化に関連する幅広いトピックをカバーしています。まず、機械学習におけるデータ視覚化の重要性と、強力なライブラリとしての Matplotlib の使用について紹介します。曲線のプロット、棒グラフの作成、ヒストグラムと箱ひげ図の生成、色、マーカー、および線のスタイルのカスタマイズ方法を示します。このチュートリアルでは、グラフの保存、注釈の追加、目盛り間隔の操作についても説明します。さらに、独自の機能セットを備えた代替視覚化ツールとして Seaborn が紹介されています。このチュートリアルに従うことで、視聴者はデータ視覚化スキルを強化し、これらの強力な Python ライブラリを使用して発見したことを効果的に伝えることができます。

  • 00:00:00 インストラクターは、データの視覚化と機械学習におけるその重要性を紹介します。彼は、世界中で収集された大量のデータを理解する必要性と、これを達成するためにデータの視覚化がどのように役立つかを強調します。このコースでは、Python でのデータ視覚化に最も広く使用されている 2 つのライブラリ、Matplotlib と Seaborn について説明します。講師は、このコースは主に Python を学習したい機械学習エンジニア、データ エンジニア、データ サイエンティストを対象としていると説明し、Matplotlib を使用して曲線をプロットする簡単な例を示します。 Matplotlib の背後にある哲学は、機械学習モデルの構築とデータのラングリングのゴールド スタンダードとなっている既存の言語 Python を活用することです。さまざまなタスク用の Python 用のパッケージが多数あるため、Matplotlib と他のパッケージを組み合わせるには Python コードを使用する必要があります。

  • 00:05:00 このビデオでは、科学計算に NumPy パッケージを Matplotlib とともに使用することの重要性を説明しています。 Matplotlib は NumPy がなくても動作しますが、NumPy を使用すると、強力な多次元配列オブジェクトとそれを操作する関数が提供されるため、時間と労力を大幅に節約できます。ビデオには、NumPy を使用して 100 点の曲線を生成して x 座標と y 座標を計算する例が含まれています。これは、純粋な Python を使用して操作を実行するよりもはるかに高速です。さらに、ビデオでは比較のために 1 つのグラフに 2 つの曲線をプロットする方法、Python コードを使用してファイルからデータをプロットする方法、データを抽出して整理する方法、項目の代わりに点を線形にプロットする方法について説明します。

  • 00:10:00 ビデオ チュートリアルでは、Matplotlib ライブラリを使用してさまざまな種類の棒グラフを作成する方法を説明します。 bar 関数は棒グラフを作成するための専用関数で、各棒の x 座標と各棒の高さを入力パラメーターとして受け取ります。オプションのパラメータを調整することで、さまざまな効果を作成したり、bar h 関数を使用して水平バーを作成したりすることもできます。このチュートリアルでは、同じチャート上に複数の棒グラフをプロットする方法と、bar 関数の特別なパラメーターを使用して積み上げ棒をプロットする方法についても説明します。最後に、チュートリアルでは、円関数を使用した円グラフの作成について触れます。

  • 00:15:00 ビデオ チュートリアルでは、matplotlib を使用したデータ視覚化で使用されるさまざまな関数について説明します。最初に取り上げる関数は、確率分布をグラフで表現したヒストグラムです。ビデオでは、ヒストグラムを生成するために、ユーザーがデータを簡単にプロットできるようにする hist 関数とそのパラメーターについて説明しています。 2 番目に取り上げる関数は箱ひげ図です。これを使用すると、値の分布を簡単に比較できます。このビデオでは、データ セットの四分位数、中央値、平均値、統計量などの箱ひげ図の構造と、箱ひげ図関数を使用してそれらを生成する方法について説明します。最後に、このチュートリアルでは、3 つ組、4 つ組、HTML カラー名を使用した色の定義、曲線プロットの色の設定など、さまざまな色とスタイルを使用したプロットの変更について説明します。

  • 00:20:00 このビデオでは、「color」パラメーターを使用して散布図、棒グラフ、円グラフに色を追加し、個々のドットの色を制御したり、すべてのドットに共通の色を変更したりする方法を説明します。このビデオでは、ライブラリをモジュールとしてインポートする方法、コーディングを容易にするためのエイリアスの使用方法、および変数が何を表すかについても説明しています。さらに、視聴者は、matplotlib と Python のほとんどすべてに、「pi」関数や「show」関数などの関数が含まれることに注意してください。

  • 00:25:00 箱ひげ図、マーカー、線の形状を作成するときのカスタム カラー スキームと線のパターンについて学びます。また、定義済みの形状を使用して独自のマーカーを作成する方法と、数学テキスト シンボルを使用して独自のマーカーを定義する方法も学習します。さらに、一元化された構成オブジェクトを使用して Matplotlib のデフォルト設定を簡単に変更し、さまざまな使用状況に応じて黒の背景と白の注釈を使用できるようにする方法を学びます。

  • 00:30:00 プレゼンターは、Matplotlib の「savefig」関数を使用してグラフをファイルに保存する方法を説明します。また、タイトル、x 軸と y 軸のラベル、境界ボックス、矢印などの注釈をグラフに追加する方法についても説明します。さらに、Matplotlib で目盛りの間隔を手動で制御する方法を示します。このビデオでは、グラフに注釈を付け、読者にとってわかりやすくするために Matplotlib で利用できるさまざまな関数を紹介します。

  • 00:35:00 インストラクターは、matplotlib を使用したデータの視覚化について説明し、グラフに軸ロケーターとグリッドを追加する方法を示します。その後、ビデオは matplotlib への高レベル インターフェイスである seaborn の紹介に進みます。インストラクターは、seaborn が matplotlib とは異なるパラメーターを提供する方法を説明し、組み込みのデータセットと Seaborn のカラー マップを使用してビジュアライゼーションを作成する方法を示します。ビデオの最後には、因子プロットを作成し、カラー マップを使用してデータをプロットする例が示されています。全体として、視聴者は matplotlib と seaborn のさまざまな関数とツールの使用方法を学び、データ視覚化スキルを向上させることができます。

  • 00:40:00 ビデオでは、Seaborn の set context 関数を使用してプロットを拡大縮小する方法を説明しています。コンテキスト設定関数を使用すると、プロットが表示されるコンテキストに応じて、サイズなどのプロット要素を制御できます。ビデオでは、Seaborn の 2 種類の関数 (軸レベル関数と図レベル関数) の違いについて説明します。 Axes レベル関数は軸レベルで動作し、Axes オブジェクトを返します。一方、Figure レベル関数は、意味のある方法で編成された Axes を含むプロットを作成します。最後に、ビデオでは matplotlib axis subplots オブジェクトを使用して箱ひげ図の軸を設定する方法について説明します。
Data Visualization with matplotlib in 1 Hour
Data Visualization with matplotlib in 1 Hour
  • 2022.04.29
  • www.youtube.com
In this FREE course let's learn the basics of creating data visualizations with the grandfather of visualization libraries in Python, matplotlib.LogikBot - A...
 

Python、TensorFlow、Keras を使用したディープ ラーニングのチュートリアル



Python、TensorFlow、Keras を使用したディープ ラーニングのチュートリアル

皆さん、こんにちは。深層学習と TensorFlow を使用した Python に関する待望のアップデート、および新しい Chaos チュートリアルへようこそ。最後に Python の基本的なディープ ラーニングについて取り上げてから 2 年以上が経過しましたが、この間に大きな進歩がありました。ディープ ラーニングの導入とディープ ラーニング モデルの操作は、はるかに簡単かつアクセスしやすくなりました。

下位レベルの TensorFlow コードと複雑な詳細を詳しく調べることに興味がある場合は、古いビデオを参照してください。ただし、ディープラーニングを始めようとしている場合は、TensorFlow の上にある Chaos のようなユーザーフレンドリーな高レベル API が提供されているため、その作業を行う必要はもうありません。これらの API を使用すると、ディープ ラーニングが非常に簡単になり、ディープ ラーニングの事前知識がなくても誰でも理解できるようになります。

このチュートリアルでは、ニューラル ネットワークについて簡単に説明します。まず、ニューラル ネットワークのコア コンポーネントを理解しましょう。ニューラル ネットワークを含む機械学習モデルの主な目的は、入力を出力にマッピングすることです。たとえば、入力 X1、X2、および X3 が与えられた場合、出力が犬と猫のどちらに対応するかを判断することを目的としています。この場合、出力層は犬または猫である可能性を表す 2 つのニューロンで構成されます。

このマッピングを実現するには、単一の隠れ層を使用します。各入力 X1、X2、および X3 は、隠れ層内のニューロンに接続されます。これらの接続にはそれぞれ、固有の重みが関連付けられています。ただし、単一の隠れ層に限定すると、入力と出力の間の関係は線形になります。複雑な問題によく見られる非線形関係を捉えるには、2 つ以上の隠れ層が必要です。 2 つ以上の隠れ層を持つニューラル ネットワークは、ディープ ニューラル ネットワークと呼ばれることがよくあります。

別の非表示レイヤーを追加して、前のレイヤーと完全に接続しましょう。レイヤー間の各接続には独自の重みがあります。最終的に、出力は最終層から導出され、出力層への各接続は固有の重みを持ちます。個々のニューロン レベルでは、ニューロンは入力層の値 (X1、X2、X3) または他のニューロンからの入力を受け取ります。これらの入力は、関連する重みを考慮して合計されます。さらに、ニューロンの発火の有無をシミュレートするために活性化関数が適用されます。一般的な活性化関数には、0 から 1 までの値を返すステップ関数またはシグモイド関数が含まれます。ニューラル ネットワークでは、出力層はシグモイド活性化関数を利用し、各クラス (犬または猫) に確率を割り当てます。次に、Arg max 関数を使用して、最も高い確率に基づいて予測クラスが決定されます。

ニューラル ネットワークの基本を理解したので、TensorFlow を使用してニューラル ネットワークを構築しましょう。まず、「pip install --upgrade tensorflow」コマンドを実行して、TensorFlow がインストールされていることを確認します。 TensorFlow を「tf」としてインポートし、「tf.version」を使用して現在のバージョンを確認できます。このチュートリアルでは Python 3.6 以降が推奨されますが、TensorFlow は将来 Python 3.7 以降のバージョンをサポートする予定です。

次に、作業するデータセットをインポートします。 MNIST データセットを利用します。これは、0 から 9 までの手書き数字の 28x28 の画像で構成されます。これらの画像はニューラル ネットワークに入力され、ネットワークは対応する数字を予測します。データセットをトレーニング変数とテスト変数 (X_train、Y_train、X_test、Y_test) に分割します。

パフォーマンスを向上させるために、データを正規化します。画像のピクセル値の範囲は現在 0 ~ 255 なので、TF.keras.utils.normalize 関数を使用して 0 ~ 1 の間でスケールします。

モデルを構築するには、高レベル API Chaos を使用します。これにより、TensorFlow でニューラル ネットワークを作成およびトレーニングするプロセスが簡素化されます。 Chaos は、レイヤーを次々に積み重ねることを可能にする Sequential と呼ばれるシーケンシャル モデルを提供します。

Chaos を使用してニューラル ネットワーク モデルを作成する方法の例を次に示します。

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dense

# Create a sequential model
model = Sequential()

# Add a flatten layer to convert the input into a 1D array
model.add(Flatten(input_shape=(28, 28)))

# Add a dense layer with 128 neurons and ReLU activation
model.add(Dense(128, activation='relu'))

# Add another dense layer with 10 neurons for the output and softmax activation
model.add(Dense(10, activation='softmax'))

# Compile the model
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])


上記のコードでは、TensorFlow と Chaos から必要なモジュールをインポートします。 Sequential モデルを作成し、add メソッドを使用してそれにレイヤーを追加します。最初のレイヤーは、2D 入力 (28x28 画像) を 1D 配列に変換する Flatten レイヤーです。次に、128 個のニューロンと ReLU 活性化を含む高密度層を追加します。最後に、10 個のニューロン (10 桁に対応) とソフトマックス アクティベーションを含む出力層を追加します。

モデルを定義したら、compile メソッドを使用してコンパイルします。オプティマイザー (この場合は 'adam')、損失関数 (複数クラス分類の場合は 'sparse_categorical_crossentropy')、およびトレーニング中に評価するメトリクスを指定します。

モデルを定義してコンパイルしたので、MNIST データセットでのトレーニングに進むことができます。 Fit メソッドを使用してモデルをトレーニングします。

# Train the model model.fit(X_train, Y_train, epochs= 10 , validation_data=(X_test, Y_test))

上記のコードでは、トレーニング データ (X_train および Y_train) をトレーニング対象のエポック数とともに Fit メソッドに渡します。また、トレーニング中に目に見えないデータに対するモデルのパフォーマンスを評価するための検証データ (X_test および Y_test) も提供します。

モデルをトレーニングした後、predict メソッドを使用して予測を行うことができます。

# Make predictions predictions = model.predict(X_test)

上記のコードでは、テスト データ (X_test) を予測メソッドに渡し、各クラスの予測確率を返します。

これは、TensorFlow で Chaos を使用したニューラル ネットワークの構築とトレーニングの簡単な概要です。さまざまなレイヤー、アクティベーション関数、オプティマイザー、その他のパラメーターをさらに調べて、モデルをカスタマイズできます。

ニューラル ネットワークの構築とトレーニングに関連する追加の技術と概念。

  1. 正則化テクニック:

    • ドロップアウト: ドロップアウトは、過学習を防ぐために使用される正則化手法です。トレーニング中の更新ごとに入力ユニットの一部をランダムに 0 に設定します。これにより、モデルが特定の特徴セットに過度に依存するのを防ぐことができます。

    • L1 および L2 正則化: L1 および L2 正則化は、ネットワーク内の重みが大きくならないように損失関数にペナルティを追加するために使用される手法です。 L1 正則化は損失関数に重みの絶対値を追加してスパース性を促進し、L2 正則化は損失関数に重みの 2 乗を追加して小さな重みを促進します。

  2. 高度なアクティベーション機能:

    • Leaky ReLU: Leaky ReLU は、負の入力に対して小さな傾きを許容することで「瀕死の ReLU」問題を解決する活性化関数です。入力が負の場合、小さな負の傾きが導入され、トレーニング中にニューロンが死滅するのを防ぐのに役立ちます。

    • Exponential Linear Unit (ELU): ELU は、負の入力に対する出力を平滑化し、アクティベーションが負の値を取ることを可能にするアクティベーション関数です。これは、ニューラル ネットワークの学習を改善し、正の値へのバイアスを軽減するのに役立つことが示されています。

    • Swish: Swish は、線形関数とシグモイド関数の間で滑らかな補間を実行するアクティベーション関数です。特定のケースでは、ReLU やシグモイドなどの他の活性化関数と比較して、より良い結果が得られることが示されています。

  3. 転移学習: 転移学習は、事前トレーニングされたモデルを活用して、新しいタスクを解決したり、関連タスクにおけるモデルのパフォーマンスを向上させたりする手法です。モデルを最初からトレーニングする代わりに、事前トレーニングされたモデルを開始点として使用し、特定のタスクまたはデータセットに合わせて微調整することができます。これは、特定のタスクのデータが限られている場合に特に便利です。

  4. ハイパーパラメーターの調整: ハイパーパラメーターは、モデルによって学習されないが、学習率、バッチ サイズ、レイヤー数などの学習プロセスに影響を与えるパラメーターです。これらのハイパーパラメーターの調整は、モデルのパフォーマンスに大きな影響を与える可能性があります。グリッド検索、ランダム検索、ベイジアン最適化などの手法を使用して、ハイパーパラメーター空間を体系的に検索し、最適な組み合わせを見つけることができます。

  5. モデルの評価: モデルのパフォーマンスを評価することは、その有効性を評価するために重要です。分類タスクの一般的な評価指標には、正確度、精度、再現率、F1 スコア、受信者動作特性曲線下面積 (ROC AUC) が含まれます。当面の問題とデータの性質に基づいて、適切な指標を選択することが重要です。

  6. 不均衡なデータセットの処理: 不均衡なデータセットは、クラスの分布が等しくない場合に発生し、偏ったモデルにつながる可能性があります。少数クラスのオーバーサンプリング、多数クラスのアンダーサンプリング、または両方の組み合わせの使用などの手法は、この問題の解決に役立ちます。さらに、精度、再現率、F1 スコアなどの評価指標を利用すると、不均衡なデータセットでのモデルのパフォーマンスをより深く理解できるようになります。

ニューラル ネットワークの構築とトレーニングは反復的なプロセスであることを覚えておいてください。望ましい結果を達成するには、実験、微調整、継続的な改善が必要です。

Deep Learning with Python, TensorFlow, and Keras tutorial
Deep Learning with Python, TensorFlow, and Keras tutorial
  • 2018.08.11
  • www.youtube.com
An updated deep learning introduction using Python, TensorFlow, and Keras.Text-tutorial and notes: https://pythonprogramming.net/introduction-deep-learning-p...
 

独自のデータの読み込み - Python、TensorFlow、Keras を使用した深層学習の基礎 p.2



独自のデータの読み込み - Python、TensorFlow、Keras を使用した深層学習の基礎 p.2

皆さん、Karros での Python TensorFlow に関する深層学習チュートリアルのパート 2 へようこそ。このチュートリアルでは、外部データセットの読み込みに焦点を当てます。具体的には、元々は Kaggle チャレンジであった、Microsoft の猫と犬のデータセットを使用します。目標は、画像に猫が含まれているか犬が含まれているかを識別するニューラル ネットワークをトレーニングすることです。

まず、Microsoft から犬と猫のデータセットをダウンロードしてください。データセットをダウンロードして抽出すると、「cat」と「dog」という 2 つのディレクトリが表示されるはずです。これらのディレクトリには、それぞれ猫と犬の画像が含まれています。各ディレクトリには、モデルをトレーニングするための十分なサンプルを提供する、約 12,500 というかなりの数のサンプルが含まれている必要があります。

次に、コーディング部分に進みましょう。いくつかのライブラリをインポートする必要があります: numpy を np として、matplotlib.pyplot を plt として、OpenCV を cv2 として。これらのライブラリがインストールされていない場合は、pip を使用してインストールできます。

次に、データセットが配置されるデータ ディレクトリを定義します。それに応じてデータセットへのパスを指定できます。また、データセット内のディレクトリと一致するように、カテゴリを「犬」と「猫」として定義します。

OS ライブラリを使用して、各カテゴリと対応するイメージを繰り返し処理します。各画像について、cv2 ライブラリを使用してグレースケールに変換します。この特定のタスクにおいて猫と犬を区別するのに色は重要ではないと考えているため、グレースケールを選択しました。

画像を視覚化するには、matplotlib.pyplot を使用します。 plt.imshow とグレースケール カラー マップを使用してサンプル画像を表示します。このステップにより、画像が正しくロードされたことを確認できます。

画像を確認した後、均一な形状にリサイズしていきます。一貫性を確保するには、50x50 ピクセルなどのターゲット サイズを決定する必要があります。 cv2.resize 関数を使用して画像のサイズを変更し、サイズ変更された画像配列を保存します。

次に、トレーニング データセットを作成します。 「training_data」という空のリストを初期化し、「create_training_data」という関数を定義します。この関数内では、画像を反復処理し、「カテゴリ」リストのカテゴリのインデックスを使用して数値ラベル (犬には 0、猫には 1) を割り当てます。

画像ごとに、選択したターゲット サイズにサイズ変更します。サイズ変更された画像配列とそれに対応するラベルを training_data リストに追加します。データセット内の破損した画像に関連する潜在的な例外も処理します。

トレーニング データセットを作成したら、データのバランスを確認する必要があります。このような 2 値分類タスクでは、各クラスのサンプル数が等しい (50% が犬、50% が猫) ことが重要です。データの不均衡は、偏ったモデル予測につながる可能性があります。データの不均衡がある場合は、トレーニング中にクラスの重みを使用してこの問題を軽減できます。

ランダム性を確保し、モデルが画像の順序を学習しないようにするために、random.shuffle 関数を使用してトレーニング データをシャッフルします。

データがシャッフルされたので、特徴 (X) とラベル (Y) の変数にデータをパックできます。 X と Y の空のリストを初期化し、トレーニング データを反復処理して、それぞれのリストに特徴とラベルを追加します。最後に、X を NumPy 配列に変換し、np.array と各特徴の形状を使用して再形成します。

この時点で、ニューラル ネットワークをトレーニングするためのデータが準備されました。これで、データをトレーニング セットと検証セットに分割し、モデルを構築し、TensorFlow を使用してトレーニングするなど、さらなるステップに進む準備が整いました。

負の 1 は、配列の長さと各要素の形状に基づいてサイズを自動的に計算するプレースホルダーです。したがって、この場合は、X 配列を (-1, image_size, image_size) の形状になるように再形成します。これにより、データがニューラル ネットワークに供給される正しい形式であることが保証されます。

次に、画像のピクセル値を正規化する必要があります。現在、ピクセル値の範囲は 0 ~ 255 で、グレースケールの強度を表します。一般に、ニューラル ネットワークは、入力データが正規化されている場合、つまり値がより小さい範囲にスケーリングされている場合にパフォーマンスが向上します。これを実現するには、ピクセル値を 255.0 で除算し、0 から 1.0 の間でスケールします。これは、次のコードを使用して実行できます。

x = x / 255.0

前処理されたデータが得られたので、TensorFlow を使用した深層学習モデルの構築に進むことができます。
Loading in your own data - Deep Learning basics with Python, TensorFlow and Keras p.2
Loading in your own data - Deep Learning basics with Python, TensorFlow and Keras p.2
  • 2018.08.18
  • www.youtube.com
Welcome to a tutorial where we'll be discussing how to load in our own outside datasets, which comes with all sorts of challenges!First, we need a dataset. L...
 

畳み込みニューラル ネットワーク - Python、TensorFlow、Keras を使用した深層学習の基礎 p.3



畳み込みニューラル ネットワーク - Python、TensorFlow、Keras を使用した深層学習の基礎 p.3

皆さん、こんにちは。Python、TensorFlow、Keras を使用した深層学習チュートリアル シリーズのパート 3 へようこそ。このビデオでは、畳み込みニューラル ネットワーク (CNN) と、前のビデオで構築したデータセットを使用して、それを適用して犬と猫を分類する方法に焦点を当てます。

CNN について説明する前に、CNN がどのように機能するのか、また CNN が画像データに役立つ理由について簡単に説明します。 CNN には、畳み込み、プーリング、さらに畳み込みとプーリングといういくつかのステップが含まれます。畳み込みの背後にある主なアイデアは、画像から有用な特徴を抽出することです。通常は行列 (3x3 など) として表される畳み込みウィンドウを使用して画像をスキャンし、ウィンドウ内の情報を単一の値に単純化します。その後、ウィンドウが切り替わり、このプロセスが複数回繰り返されます。ウィンドウの移動量を決定するストライドも調整できます。

Keras を使用すると、ウィンドウ サイズを指定でき、その他のほとんどの詳細は自動的に処理されます。深層学習の複雑さをさらに深く掘り下げたい場合は、「実践的な機械学習」チュートリアル シリーズをチェックすることをお勧めします。そこでは、特に生の TensorFlow コードについて、内部の仕組みがより詳細に説明されています。

畳み込み層の出力は、画像から抽出された一連の特徴です。これらの機能は通常、プーリング層を通過します。最も一般的なタイプは最大プーリングです。最大プーリングは、ウィンドウ内の最大値を選択し、それを繰り返しシフトして、データを効果的にダウンサンプリングします。

CNN の背後にある上位レベルの考え方は、ネットワークの奥深くに進むにつれて、画像からより複雑な特徴を徐々に抽出するというものです。最初のレイヤーはエッジや線を識別する可能性がありますが、より深いレイヤーでは円や四角形などのより複雑な形状を認識する場合があります。最終的に、ネットワークは特定のオブジェクトやパターンを識別できるようになります。

CNN を実装するには、必要なライブラリをインポートする必要があります。 TensorFlow と、Sequential、Dense、Dropout、Activation、Conv2D、MaxPooling2D などの使用する Keras モジュールをインポートします。データセットをロードするために pickle もインポートします。

データをニューラル ネットワークに入力する前に、データの正規化を検討する必要があります。この例では、ピクセル値の範囲が 0 ~ 255 であるため、ピクセル データを 255 で割ることによってスケールできます。または、より複雑な正規化シナリオの場合は、chaos.utils の正規化関数を使用することもできます。

次に、Sequential API を使用してモデルの構築を開始します。 64 ユニットと 3x3 ウィンドウ サイズの Conv2D レイヤーを追加します。 input_shape は、X.shape を使用して動的に設定されます。次に、修正線形活性化関数 (ReLU) を使用して活性化層を追加します。次に、2x2 ウィンドウ サイズの最大プーリング層を追加します。

別の Conv2D レイヤーと対応する最大プーリング レイヤーを追加して、このプロセスを繰り返します。この時点で、2D 畳み込みニューラル ネットワークが完成しました。

抽出された特徴を完全に接続された層に渡すには、データを平坦化する必要があります。 64 ノードを持つ最終的な Dense レイヤーを追加する前に、Flatten レイヤーを追加します。最後に、単一ノードを持つ出力層を追加し、カテゴリカルまたはバイナリのいずれかである活性化関数を指定します。

損失関数 (カテゴリまたはバイナリのクロスエントロピー)、オプティマイザー (Adam など)、およびモデルのパフォーマンスを評価するためのメトリクス (精度など) を指定してモデルをコンパイルします。

モデルをトレーニングするには、fit メソッドを使用し、入力データ X とラベル Y を渡します。バッチ サイズ (例: 32) を指定することもできます。

次のコードを使用してモデルをトレーニングします。

model.fit(X, Y, batch_size= 32 , validation_split= 0.1 )

このコードは、入力データ X と対応するラベル Y を使用してモデルをトレーニングします。バッチ サイズを 32 に設定します。これは、モデルがトレーニング中に一度に 32 個のサンプルを処理することを意味します。 validation_split パラメーターは 0.1 に設定されます。これは、モデルのトレーニング中にデータの 10% が検証に使用されることを意味します。

モデルがトレーニングされると、テスト データを使用してそのパフォーマンスを評価できます。次のコードを使用してモデルを評価できます。

model.evaluate(X_test, Y_test)

ここで、X_test と Y_test はそれぞれテスト データとラベルを表します。このコードは、テスト データ上のモデルの損失値と精度を返します。

モデルを評価した後、それを使用して、新しいまだ見たことのないデータを予測できます。 detect() 関数を使用して、新しいデータの予測ラベルを取得できます。以下に例を示します。

predictions = model.predict(X_new)

このコードは、新しいデータ X_new の予測を生成します。予測は各クラスの確率であり、argmax() 関数を使用して最も高い確率を持つクラスを見つけることができます。以下に例を示します。

predicted_labels = np.argmax(predictions, axis= 1 )

このコードは、新しいデータの各サンプルの予測ラベルとして最も高い確率のクラスを割り当てます。

それでおしまい!これで、畳み込みニューラル ネットワーク モデルをトレーニングして犬と猫を分類し、それを使用して新しいデータを予測しました。必要に応じて、将来使用できるようにトレーニング済みモデルを忘れずに保存してください。

Convolutional Neural Networks - Deep Learning basics with Python, TensorFlow and Keras p.3
Convolutional Neural Networks - Deep Learning basics with Python, TensorFlow and Keras p.3
  • 2018.08.19
  • www.youtube.com
Welcome to a tutorial where we'll be discussing Convolutional Neural Networks (Convnets and CNNs), using one to classify dogs and cats with the dataset we bu...
 

TensorBoard によるモデルの分析 - Python、TensorFlow、Keras による深層学習 p.4



TensorBoard によるモデルの分析 - Python、TensorFlow、Keras による深層学習 p.4

皆さん、「Python による深層学習: TensorFlow と Keras」チュートリアル シリーズのパート 4 へようこそ。このビデオと次のビデオでは、TensorBoard を使用してモデルを分析および最適化する方法について説明します。 TensorBoard は、時間の経過に伴うモデルのトレーニングを視覚化できる強力なツールです。その主な目的は、精度、検証精度、損失、検証損失など、モデルのパフォーマンスのさまざまな側面を理解するのに役立つことです。さらに、TensorBoard にはさらに高度な機能があり、今後のチュートリアルで検討する可能性があります。

TensorBoard について詳しく説明する前に、細かい点について触れておきましょう。このチュートリアルにとって重要ではありませんが、小さなモデルでも大量の GPU メモリを消費する傾向があることを指摘しておきます。複数のモデルを同時に実行する予定がある場合は、各モデルが使用する GPU メモリの一部を指定できます。こうすることで、複数のモデルを実行したり、メモリの制約が発生したりする場合の潜在的な問題を回避できます。たとえば、私は通常、GPU メモリの 3 分の 1 を使用するようにモデルを設定します。このアプローチは、物体検出や自動運転を伴う「Python Plays GTA」シリーズなど、複数のモデルを同時に実行する場合に役立つことが証明されています。これは、時間と頭痛の種を節約するための便利なヒントです。

さて、本題に進みましょう。最初に取り組みたいのは、高密度層の後に活性化関数を追加することです。最初にこれを含めなかったのは私の見落としでした。活性化関数を追加することは不可欠です。これがないと、高密度層は線形活性化関数になり、私たちの目的には適さないからです。回帰を回避し、モデルが最適に動作することを保証したいと考えています。そこで、高密度層の前に活性化関数を挿入して、この問題をすぐに修正しましょう。

この修正を行うと、精度が大幅に向上することがわかります。モデルのトレーニング中に、TensorFlow ドキュメントを調べて、利用可能なさまざまな Keras コールバックについて学びましょう。私たちのケースでは、TensorBoard コールバックを使用して TensorBoard とインターフェイスします。ただし、特定のパラメーターに基づく早期停止、学習率のスケジューリング、モデルのチェックポイント設定など、他にも便利なコールバックがあることは注目に値します。モデルのチェックポイント設定は、最高の損失や検証精度など、特定の間隔でモデルを保存する場合に特に役立ちます。現時点では TensorBoard コールバックに焦点を当てますが、将来のビデオで他のコールバックについて簡単に触れることもできます。

TensorBoard コールバックを使用するには、TensorFlow の Keras コールバック モジュールからそれをインポートする必要があります。 TensorBoard をインポートするには、次のコード行を追加します。

from tensorflow.keras.callbacks import TensorBoard

必要なモジュールをインポートしたので、ハウスキーピングを実行しましょう。特に複数のモデルを操作する場合は、モデルに意味のある名前を付けることを常にお勧めします。この場合、モデルに「cats_vs_dogs_CNN_64x2」のような名前を付けることができます。さらに、一意性を確保するために、名前にタイムスタンプを追加しましょう。タイムスタンプを含めると、モデルを再トレーニングするとき、またはモデルのバージョンとの混乱を避けるときに役立ちます。したがって、コードの最初で、モデル名とタイムスタンプを次のように定義しましょう。

import time model_name = f"cats_vs_dogs_CNN_64x2_ { int (time.time())} "

一意のモデル名を取得したので、TensorBoard コールバック オブジェクトを作成できます。次のコードを使用して、TensorBoard オブジェクトを tensorboard_callback という変数に割り当てます。

tensorboard_callback = TensorBoard(log_dir= f"logs/ {model_name} " )

ここでは、log_dir パラメーターを使用して TensorBoard のログ ディレクトリを指定します。前に定義したモデル名を使用して、ログ ディレクトリのパスをフォーマットします。

さらに、テンソル ボードを使用すると、トレーニング プロセスを視覚化してモデルを分析および最適化できます。主に、精度、検証精度、損失、検証損失などの指標に焦点を当てます。これらの指標は、モデルが時間の経過とともにどのようにパフォーマンスを発揮しているかを理解し、改善の余地がある領域を特定するのに役立ちます。精度と損失は一般的に監視されますが、Tensor ボードは、将来的に探索される可能性のあるより高度な機能を提供します。

tensor ボードの使用を開始するには、まずコードに小さな追加を行う必要があります。このチュートリアルにとっては重要ではありませんが、言及する価値はあります。数行のコードを追加することで、モデルに GPU メモリの特定の部分を割り当てることができます。これは、複数のモデルを同時に実行する場合、または VRAM で問題が発生する場合に役立ちます。これにより、GPU の割り当てを制御し、潜在的なクラッシュやメモリ オーバーフローを回避できます。この例では、GPU の 3 分の 1 をモデルに割り当てます。これにより、スムーズな実行が確保され、他のモデルやプロジェクトを操作する際の競合が防止されます。

次に、tensor ボードの実装に焦点を当てましょう。まず、必要な依存関係をインポートする必要があります。 「tensorflow.keras.callbacks」パッケージから「tensorboard」モジュールをインポートします。このモジュールは、Tensor ボードのコールバック機能を提供します。

次に、モデルに意味のある名前を割り当てます。複数のモデルを操作する場合、各モデルに個別の名前を付けることが不可欠です。これは実験を追跡し、混乱を避けるのに役立ちます。この場合、モデルに「cat's_first_dog_CNN_64x2_good_enough」という名前を付けます。さらに、現在の時刻値を使用して名前にタイムスタンプを追加します。これにより、一意性が保証され、モデルの誤った上書きが防止されます。

モデルに名前を付けたら、テンソル ボード コールバック オブジェクトを定義できます。 「TensorBoard」クラスのインスタンスを作成し、それを変数「tensorboard」に割り当てます。ログ ディレクトリのパスをコンストラクターに渡します。ログ ディレクトリは、tensor ボードがモデルに関連するログとデータを保存する場所です。文字列形式を使用して、ログ ディレクトリ パスにモデル名を含めます。

コールバック オブジェクトの準備ができたら、それをモデルのトレーニング プロセスに組み込むことができます。モデルの「fit」メソッドでは、コールバック オブジェクトをリストとして「callbacks」パラメータに渡します。この場合、コールバックは 1 つだけあり、それが tensor ボード コールバックです。ただし、必要に応じてリストに複数のコールバックを含めることができることに注意してください。

コールバックが統合されたので、モデルをトレーニングできるようになりました。この例では、エポック数を 10 に設定します。ただし、要件に基づいてエポック数を自由に調整してください。モデルがトレーニングされると、テンソル ボードは指定されたメトリクスに基づいてログと視覚化の生成を開始します。

動作中の Tensor ボードを表示するには、コマンド ウィンドウまたはターミナルを開いて、ログ ファイルが含まれるディレクトリに移動する必要があります。正しいディレクトリに移動したら、コマンド プロンプトに「tensorboard --logdir logs」と入力して、tensorboard コマンドを実行します。このコマンドは、テンソル ボード サーバーを開始し、テンソル ボード インターフェイスにアクセスできるローカル URL を提供します。

tensor ボードを起動した後、Web ブラウザを開いて、コマンド プロンプトで指定された URL を入力します。これにより、モデルのトレーニングの進行状況を視覚化できるテンソル ボード インターフェイスが表示されます。インターフェイスには、サンプル内精度、サンプル内損失、サンプル外精度、サンプル外損失などのさまざまなグラフが表示されます。これらのメトリクスを分析してモデルのパフォーマンスを監視し、情報に基づいて最適化に関する意思決定を行います。

グラフを観察することで、モデルの動作のパターンと傾向を特定できます。たとえば、検証精度が安定しているにもかかわらず、検証損失が増加し始める場合、または検証精度が低下する場合は、過剰適合を示します。一方、検証精度と損失の両方が時間の経過とともに改善する場合は、モデルが効果的に学習していることを示唆しています。

Tensor ボードは、モデルの分析と最適化のための強力なプラットフォームを提供します。その視覚化により、トレーニング プロセスに関する貴重な洞察が得られ、意思決定が容易になります。 tensor ボードを活用することで、モデル開発プロセスを合理化し、より良い結果を達成できます。

このチュートリアル シリーズの次のパートでは、ヒストグラム、分布、埋め込みなどの tensor ボードの高度な機能をさらに深く掘り下げていきます。これらの機能により、さらなる粒度が提供され、モデルをより包括的に理解できるようになります。これらのエキサイティングな機能を説明する次のビデオにご期待ください。

このチュートリアルはこれで終わりです。ご視聴いただきありがとうございます。次のビデオでお会いしましょう!

Analyzing Models with TensorBoard - Deep Learning with Python, TensorFlow and Keras p.4
Analyzing Models with TensorBoard - Deep Learning with Python, TensorFlow and Keras p.4
  • 2018.08.24
  • www.youtube.com
Welcome to part 4 of the deep learning basics with Python, TensorFlow, and Keras tutorial series. In this part, what we're going to be talking about is Tenso...
 

TensorBoard による最適化 - Python、TensorFlow、Keras を使用した深層学習 p.5



TensorBoard による最適化 - Python、TensorFlow、Keras を使用した深層学習 p.5

皆さんこんにちは。Python TensorBoard と Keras を使用した深層学習チュートリアル シリーズの第 5 部へようこそ。このチュートリアルでは、TensorBoard と、それを使用してさまざまなモデルの試行を視覚化することでモデルを最適化する方法に焦点を当てます。さあ、それに飛び込んでみましょう!

まず、モデルを分析し、パフォーマンスを向上させるために調整できる点を特定しましょう。現在のモデルは約 79% の精度を達成しましたが、さらに改善できると考えています。最適化の可能性のある領域には、オプティマイザー、学習率、高密度層の数、層ごとのユニット、アクティベーション ユニット、カーネル サイズ、ストライド、減衰率などが含まれます。検討すべきオプションが多数あるため、最終的には何千ものモデルをテストすることになる可能性があります。では、どこから始めましょうか?

作業を簡単にするために、最も簡単な変更から始めましょう。レイヤーの数、レイヤーごとのノード、最後に密なレイヤーを含めるかどうかの調整に焦点を当てます。密な層の数については、0、1、または 2 を検討します。レイヤー サイズに関しては、32、64、および 128 の値を使用します。これらの値は単なる慣例であり、好みに応じて別の値を選択できます。

次に、これらの変更をコードに実装してみましょう。高密度レイヤーの数やレイヤー サイズなど、選択したい変数をいくつか定義します。これらの変数を反復処理して、さまざまなモデルの組み合わせを作成します。さらに、各モデルの構成を反映した名前を作成します。

モデル設定を取得したら、コードへの適用に進むことができます。入力形状、畳み込み層、密層、出力層を考慮して、モデル構造を適宜更新します。また、レイヤーのサイズが適切に調整されていることも確認します。

すべての変更を加えたら、コードを実行します。ただし、多数のモデルをトレーニングするには時間がかかるため、すでにコードを実行して結果を保存しました。 TensorBoard を使用して結果を分析してみましょう。

TensorBoard ログをロードし、さまざまなモデルの組み合わせを観察します。モデルは、パフォーマンス、特に検証損失に基づいて編成されています。最もパフォーマンスの高いモデルに焦点を当て、その構成に注目します。

結果から、3 つの畳み込み層とゼロ密度層を含むモデルが一貫して良好なパフォーマンスを発揮することが明らかです。レイヤーごとの具体的なノード数はそれほど重要ではないようです。ただし、512 ノードや 256 ノードなど、より大きな高密度のレイヤーではさらに良い結果が得られる可能性があることに注意してください。これを確認するには、さまざまな高密度層サイズをテストします。

要約すると、TensorBoard を使用してさまざまなモデル構成を検討することから始めました。 3 つの畳み込み層を備え、高密度層を持たないモデルが一貫して良好なパフォーマンスを発揮することがわかりました。また、レイヤーごとのノード数をさらに最適化できることも確認しました。さまざまな高密度層サイズをテストすることで、モデルの精度をさらに向上できる可能性があります。

これは単なる出発点であり、モデルを最適化するために調整できる要素は他にもたくさんあることに注意してください。 TensorBoard は、これらのモデルの変動を視覚化および分析するための貴重なツールを提供し、モデル改善のための情報に基づいた意思決定を支援します。

Optimizing with TensorBoard - Deep Learning w/ Python, TensorFlow & Keras p.5
Optimizing with TensorBoard - Deep Learning w/ Python, TensorFlow & Keras p.5
  • 2018.08.25
  • www.youtube.com
Welcome to part 5 of the Deep learning with Python, TensorFlow and Keras tutorial series. In the previous tutorial, we introduced TensorBoard, which is an ap...
 

トレーニング済みモデルの使用方法 - Python、TensorFlow、Keras を使用した深層学習の基礎 p.6



トレーニング済みモデルの使用方法 - Python、TensorFlow、Keras を使用した深層学習の基礎 p.6

皆さんこんにちは。TensorFlow と Keras を使用した Python のディープ ラーニング チュートリアル シリーズのパート 6 へようこそ。

このビデオでは、トレーニングされたモデルを使用して新しい画像を予測する方法について説明します。データセットのトレーニングとテストは成功したが、外部画像を予測するためにモデルを使用する方法がわからないため、多くの人がこれについて質問しています。それでは、詳しく見ていきましょう!

まず、必要なライブラリをインポートする必要があります。画像処理のために cv2 をインポートし、モデルを操作するために TF として tensorflow をインポートします。また、トレーニング中に使用したクラス ラベル「犬」と「猫」を含むカテゴリ リストも必要です。

次に、ファイル パスをパラメータとして受け取る prepare という関数を定義します。この関数は、入力画像に必要な前処理ステップを処理します。画像を特定のサイズにサイズ変更し、グレースケールに変換します。画像は、再形成された numpy 配列として返されます。

その後、TF.keras.models.load_model() 関数を使用してトレーニングされたモデルをロードします。以前にモデルを「64 x 3 CNN モデル」として保存したため、同じ名前を使用してロードします。

これで、予測を行う準備が整いました。予測と呼ばれる変数を定義し、準備した画像上で model.predict() を呼び出した結果をそれに割り当てます。単一の画像に対して予測している場合でも、predict() メソッドは入力としてリストを想定していることに注意することが重要です。したがって、準備した画像をリストとして渡す必要があります。

予測結果が得られたら、それを印刷できます。ただし、予測は現在ネストされたリストの形式になっています。読みやすくするために、予測値を整数に変換し、それをインデックスとして使用して、カテゴリ リストから対応するクラス ラベルを取得できます。

最後に、画像が犬として分類されるか猫として分類されるかを表す、予測されたクラス ラベルを出力できます。

このチュートリアルでは、モデルをテストするために 2 つの外部画像を使用しました。1 つは恥辱の円錐形をした犬の画像、もう 1 つは未知の生き物の画像です。これらの画像はトレーニング データセットの一部ではないため、目に見えないデータを確実に予測できます。

自分の犬や猫の画像で試してみるには、コードに概説されている手順に従います。精度は異なる場合がありますが、平均して約 80% であることに注意してください。

それは今のところすべてです!最近のスポンサーである Michael、Nick、Rodrigo、Papasan E に感謝したいと思います。皆様のご支援に深く感謝いたします。今後のチュートリアルに関するご質問、コメント、ご提案がございましたら、以下に残してください。リカレント ニューラル ネットワークの使用に関するアイデアも歓迎します。単純なデータセットを念頭に置いている場合は、お知らせください。

次のチュートリアルでお会いしましょう。リカレント ニューラル ネットワークについて説明します。それまでは、コーディングを楽しんでください。

How to use your trained model - Deep Learning basics with Python, TensorFlow and Keras p.6
How to use your trained model - Deep Learning basics with Python, TensorFlow and Keras p.6
  • 2018.08.31
  • www.youtube.com
In this part, we're going to cover how to actually use your model. We will us our cats vs dogs neural network that we've been perfecting.Text tutorial and sa...
 

リカレント ニューラル ネットワーク (RNN) - Python、TensorFlow、Keras を使用した深層学習 p.7


リカレント ニューラル ネットワーク (RNN) - Python、TensorFlow、Keras を使用した深層学習 p.7

皆さん、こんにちは。「Chaos での Python TensorFlow による深層学習」チュートリアル シリーズのパート 7 へようこそ。このパートでは、リカレント ニューラル ネットワーク (RNN) に焦点を当てます。 RNN の目的は、データの順序の重要性と重要性を把握することです。これは、データが時間的に編成される時系列データや、文内の単語の順序が意味を持つ自然言語処理に特に関係します。

この概念を説明するために、「何人かの人々がニューラル ネットワークを作成しました」という文の例を考えてみましょう。この文がディープ ニューラル ネットワーク (通常、データを個々の単語に分割してトークン化する) で処理される場合、ネットワークは正しい意味を取得できない可能性があります。たとえば、「ニューラル ネットワークが人々を作りました」という文は、まったく異なる意味を持ちます。これは、文の意味を決定する際の単語の順序の重要性を強調しています。

ここで、リカレント ニューラル ネットワークの仕組みを詳しく見てみましょう。 RNN の基本的な構成要素はリカレント セルであり、多くの場合、長期短期記憶 (LSTM) セルを使用して実装されます。 Gated Recurrent Unit (GRU) などの他のオプションも存在しますが、LSTM セルが一般的に使用されます。 RNN では、各セルは順次データを入力として受け取り、次の層またはリカレント層内の次のセルに出力します。

セルからの出力はさまざまな方法で送信できます。一方向または双方向で次の層または次のセルに進むことができます。このチュートリアルでは、基本的な単方向 RNN に焦点を当てます。これを説明するために、再発セルを表す緑色のボックスを想像してください。前のセルからのデータが現在のセルに入り、前のノードからの無関係な情報の忘れ、新しい入力データの組み込み、次の層またはノードにどの情報を出力するかを決定するなどの操作が実行されます。

このプロセスをよりわかりやすく視覚化するために、レイヤー内の特定のセルについて考えてみましょう。緑色のボックスは現在のセルを表します。データは前のセルから流入し、ラップアラウンドして LSTM セルに入ります。セル内では、前のノードからの情報を忘れ、新しい入力データを組み込み、次の層またはノードに渡す出力を決定するための操作があります。これらの操作により、LSTM セルが重要な情報を保持し、それを後続の層またはノードに渡すことができます。

RNN の実装は、特にスカラー値を扱う場合、複雑になる可能性があります。 LSTM セルがどのように機能するかについての詳細な説明に興味がある場合は、LSTM セルを詳しく説明した包括的なガイドを確認することをお勧めします。参考のために、チュートリアルのテキスト版にこのガイドへのリンクを含めました。

それでは、基本的なリカレント ニューラル ネットワークの構築に移りましょう。このチュートリアルでは、M-NIST データセットを使用した簡単な例から始めます。次のチュートリアルでは、より現実的な時系列データ、特に暗号通貨の価格に焦点を当てて作業します。

まず、必要なライブラリをインポートしましょう。 TensorFlow を tf として、Sequential モデルを tensorflow.keras.models から、Dense レイヤーを tensorflow.keras.layers から、さらに Dropout セルと LSTM セルをインポートします。 TensorFlow の GPU バージョンを使用している場合は、KU DNN LSTM セルと呼ばれる最適化された LSTM セルも存在することに注意してください。ただし、このチュートリアルでは、通常の LSTM セルに固執します。 CPU バージョンの TensorFlow を使用している場合、計算にかなりの時間がかかる可能性があります。

次に、データセットをロードする必要があります。この例では、M-NIST データセットを使用します。 tf.keras.datasets.mnist.load_data() 関数を使用して簡単にロードでき、トレーニング データとテスト データが返されます。データを変数 X_train、Y_train、X_test、Y_test に解凍しましょう。

まず、各ピクセル値を 255 で除算して入力データを正規化しましょう。これにより、ピクセル値が 0 ~ 1 の範囲にスケーリングされ、ニューラル ネットワークのトレーニングに適しています。これは、トレーニング データとテスト データの両方を 255 で除算することで実現できます。

X_train = X_train / 255.0 X_test = X_test / 255.0

次に、ターゲット ラベルをワンホット エンコードされたベクトルに変換する必要があります。 M-NIST データセットでは、ラベルは数字を表す 0 ~ 9 の範囲の整数です。ワンホット エンコーディングは、各ラベルを長さ 10 のバイナリ ベクトルに変換します。ここで、その数字に対応するインデックスは 1 に設定され、他のすべてのインデックスは 0 に設定されます。 tensorflow.keras.utils の to_categorical 関数を使用して、1 つの処理を実行できます。 -ホットエンコーディング。

from tensorflow.keras.utils import to_categorical

Y_train = to_categorical(Y_train, num_classes=10)
Y_test = to_categorical(Y_test, num_classes=10)


次に、リカレント ニューラル ネットワークのアーキテクチャを定義しましょう。 tensorflow.keras.models の Sequential モデルを使用し、それにレイヤーを追加します。

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense

model = Sequential()
model.add(LSTM(128, input_shape=(X_train.shape[1:]), activation='relu', return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))


上記のコードでは、Sequential モデルを定義し、それぞれ 128 ユニットを持つ 2 つの LSTM レイヤーを追加します。最初の LSTM 層の input_shape パラメーターは、トレーニング セット (X_train.shape[1:]) 内の単一のデータ サンプルの形状に設定されます。また、LSTM 層の活性化関数を「relu」として指定します。最初の LSTM 層の return_sequences=True 引数により、次の LSTM 層に接続するために必要な出力シーケンスが返されることが保証されます。また、過学習を防ぐために、各 LSTM 層の後にドロップアウト率 0.2 のドロップアウト層を追加します。最後に、10 個のユニットを持つ Dense 層と、10 個のクラスの確率を出力するソフトマックス アクティベーション関数を追加します。

次に、損失関数、オプティマイザー、および評価メトリックを指定してモデルをコンパイルしましょう。

model. compile (loss= 'categorical_crossentropy' , optimizer= 'adam' , metrics=[ 'accuracy' ])

この例では、損失関数としてカテゴリカル クロス エントロピーを使用します。これは、マルチクラス分類問題に適しています。ニューラル ネットワークのトレーニングによく使われる Adam オプティマイザーを使用します。また、トレーニング中にモデルのパフォーマンスを監視するための評価指標として「精度」を指定します。

最後に、トレーニング データを使用してモデルをトレーニングし、テスト データで評価しましょう。

model.fit(X_train, Y_train, batch_size= 32 , epochs= 10 , validation_data=(X_test, Y_test))

Fit 関数では、トレーニング データとラベル (X_train および Y_train) を提供し、トレーニングのバッチ サイズとエポック数を指定します。また、トレーニング中の検証用のテスト データとラベルも提供します (validation_data=(X_test, Y_test))。 。

それでおしまい!これで、M-NIST データセットの LSTM セルを使用してリカレント ニューラル ネットワークが構築されました。さまざまなアーキテクチャ、ハイパーパラメータ、データセットを試して、RNN の機能をさらに調べることができます。

Recurrent Neural Networks (RNN) - Deep Learning w/ Python, TensorFlow & Keras p.7
Recurrent Neural Networks (RNN) - Deep Learning w/ Python, TensorFlow & Keras p.7
  • 2018.09.07
  • www.youtube.com
In this part we're going to be covering recurrent neural networks. The idea of a recurrent neural network is that sequences and order matters. For many opera...
 

暗号通貨を予測する RNN の概要 - Python、TensorFlow、Keras を使用した深層学習 p.8



暗号通貨を予測する RNN の概要 - Python、TensorFlow、Keras を使用した深層学習 p.8

みなさん、こんにちは。Python によるディープ ラーニングのチュートリアル ビデオへようこそ。このビデオと今後のビデオでは、リカレント ニューラル ネットワーク (RNN) をシーケンシャル データを扱うより現実的な例に適用する方法について説明します。具体的には、暗号通貨の価格と出来高で構成される時系列データセットを操作します。

詳細に入る前に、株価やセンサー データなど、他の種類の連続データにも同じ概念を適用できることを明確にしておきたいと思います。したがって、金融に興味がなくても、理解して概念を理解することができます。

このチュートリアルの目標は、リカレント ニューラル ネットワークを使用して、過去の価格と出来高に基づいて仮想通貨の将来の価格を予測することです。ここでは、ビットコイン、ライトコイン、イーサリアム、ビットコイン キャッシュの 4 つの主要な暗号通貨に焦点を当てます。このアイデアは、これらの各暗号通貨の過去 60 分間の価格と出来高のデータを取得し、それを入力として使用して、たとえば 3 分後のライトコインの価格を予測することです。

このタイプの予測問題は、時間と使用状況データに基づいてサーバー障害や Web サイトのトラフィックを予測するなど、他のドメインにも適用できます。最終的な目標は、分類を予測する (たとえば、価格が上昇するか下落するか) か、回帰を実行する (たとえば、実際の価格またはパーセント変化を予測する) ことです。

シーケンシャル データを扱う場合、特有の課題が生じます。まず、データを前処理し、リカレント ニューラル ネットワークが処理できるシーケンスに変換する必要があります。さらに、異なる暗号通貨の価格と出来高には異なるスケールがある可能性があることを考慮して、データのバランスをとり、正規化する必要があります。データのスケーリングは、単純に 255 で割る画像データなどの他の領域よりも複雑です。

さらに、サンプル外のデータを使用してモデルのパフォーマンスを評価することは、シーケンシャル データを扱う場合には別の課題となります。データの準備、正規化、評価など、カバーする必要があるいくつかの側面があります。

始めるために、ダウンロードできるデータセットを提供しました。ダウンロード リンクはチュートリアルの説明にあります。ダウンロードした zip ファイルを解凍すると、1 つの暗号通貨の価格と出来高のデータに対応する 4 つのファイルが見つかります。

Python の pandas ライブラリを使用して、データセットを読み取り、操作します。 pandas がインストールされていない場合は、ターミナルまたはコマンド プロンプトでコマンド pip install pandas を実行してインストールできます。

次に、pandas を使用してデータセットを読み込み、データを調べます。各暗号通貨の「終値」の価格と出来高の列に焦点を当てます。異なるファイルのデータを結合するには、「時間」列を各データフレームのインデックスとして設定します。次に、共有インデックスに基づいてデータフレームを結合します。

マージされたデータフレームを取得したら、いくつかのパラメーターを定義する必要があります。これらには、シーケンスの長さ (考慮する過去の期間の数)、将来の期間 (予測する将来の期間の数)、および予測する比率 (予測したい暗号通貨) が含まれます。

私たちの場合、過去 60 分間のデータに基づいてライトコイン (LTC) の将来の価格を予測することに重点を置き、3 分後の将来を予測します。また、現在および将来の価格に基づいて予測を価格の上昇または下落として分類する分類ルールも定義します。

これらの最初のステップが完了すると、データを前処理し、シーケンスを作成し、リカレント ニューラル ネットワークをトレーニングする準備が整いました。これらのトピックについては、今後のビデオで取り上げますので、楽しみにしていてください。

手順を進めたい場合は、必ずデータセットをダウンロードし、必要なライブラリをセットアップしてください。完全なコードと手順は、テキストベースのチュートリアルの説明に記載されています。

取り上げなければならないことがたくさんあるので、価格の上昇を示す 1 として分類しましょう。それ以外の場合、将来の価格が現在の価格よりも低い場合は、価格の下落を示す 0 として分類されます。これは分類に使用している単純なルールですが、さまざまなルールを試したり、回帰を使用して実際の価格の変化を予測したりすることもできます。

次に、メイン DataFrame にターゲット列を作成しましょう。 pandas のシフト関数を使用して、「LTCUSD_close」列の値を将来の期間分シフトします。これにより、分類を決定するために現在の価格と比較する将来の価格が得られます。結果を「target」という新しい列に割り当てます。

main_df[ 'target' ] = main_df[ 'LTCUSD_close' ].shift(-future_period)

値を負にシフトしたため、利用可能な将来の価格データがないため、「ターゲット」列の最後の数行には NaN (非数値) 値が含まれます。これらの行を DataFrame から削除します。

main_df.dropna(inplace= True )

次に、入力シーケンスを作成しましょう。 DataFrame を反復処理して、ビットコイン、ライトコイン、イーサリアム、ビットコイン キャッシュの以前の価格と量で構成される長さ sequence_length のシーケンスを作成します。これらのシーケンスを「シーケンス」と呼ばれるリストに保存します。

sequences = []
for i in range(len(main_df) - sequence_length + 1):
    sequence = main_df.iloc[i:i+sequence_length, 1:-1].values.flatten()
    sequences.append(sequence)


上記のコードでは、main_df.iloc[i:i+sequence_length, 1:-1] は、最初 (時間) 列と最後の (ターゲット) 列を除く、シーケンスの行と列を選択します。次に、.values. flatten() を使用して、選択したデータを 1D 配列に変換します。

最後に、操作とトレーニングを容易にするために、シーケンスとターゲットを numpy 配列に変換します。

import numpy as np

sequences = np.array(sequences)
targets = np.array(main_df['target'])


これで、リカレント ニューラル ネットワークをトレーニングするための入力シーケンスと対応するターゲットが準備できました。 TensorFlow や PyTorch などのライブラリを使用してモデルの構築とトレーニングに進むことができます。

ここで提供されるコードは部分的な実装であり、データの前処理ステップに焦点を当てていることに注意してください。モデル アーキテクチャをさらに開発し、モデルをトレーニングし、そのパフォーマンスを評価する必要があります。さらに、モデルの精度を向上させるために、ハイパーパラメーターを調整し、さまざまな手法を試してみる必要がある場合があります。

モデルをトレーニングする前に、必要なライブラリをインポートし、欠損データを処理し、特徴を前処理し (正規化、スケーリングなど)、データをトレーニング セットとテスト セットに分割することを忘れないでください。

これが、連続データを操作し、リカレント ニューラル ネットワークを適用して将来の価格を予測するプロセスを理解するのに役立つことを願っています。ディープラーニングプロジェクトの成功を祈ります!

Cryptocurrency-predicting RNN intro - Deep Learning w/ Python, TensorFlow and Keras p.8
Cryptocurrency-predicting RNN intro - Deep Learning w/ Python, TensorFlow and Keras p.8
  • 2018.09.15
  • www.youtube.com
Welcome to part 8 of the Deep Learning with Python, Keras, and Tensorflow series. In this tutorial, we're going to work on using a recurrent neural network t...
 

シーケンスの正規化と作成 Crypto RNN - Python、TensorFlow、Keras を使用した深層学習 p.9


シーケンスの正規化と作成 Crypto RNN - Python、TensorFlow、Keras を使用した深層学習 p.9

皆さん、こんにちは。Python、TensorFlow、Chaos によるディープ ラーニング チュートリアル シリーズの別のエピソードへようこそ。このビデオでは、仮想通貨の将来の価格変動を予測するリカレント ニューラル ネットワーク (RNN) を実装するミニ プロジェクトに引き続き取り組んでいきます。他の 3 つの暗号通貨の価格と出来高とともに、通貨の価格と出来高のシーケンスを使用します。

ここまでで、データを取得し、結合し、ターゲットを作成しました。それでは、次のステップに進みましょう。データからシーケンスを作成し、バランス、正規化、スケーリングなどのタスクを実行する必要があります。ただし、これらの作業に入る前に、アウトオブサンプル テストの問題に対処することが重要です。

時系列データを扱う場合、一部をシャッフルしてサンプル外データとしてランダムに選択すると、モデルに偏りが生じる可能性があります。私たちの場合、シーケンスが 60 分、予測ウィンドウが 3 分であるため、サンプル外データをランダムに選択すると、サンプル内セットとサンプル外セットの両方に同様の例が存在する可能性があります。これにより、モデルが過剰適合しやすくなり、目に見えないデータのパフォーマンスが低下します。

これに対処するには、サンプル外のデータを慎重に選択する必要があります。時系列データの場合、サンプル外セットとして将来のデータのチャンクを選択することをお勧めします。この例では、履歴データの最後の 5% をサンプル外データとして取得します。このアプローチでは、時間の 5% 前にモデルを構築し、それをフォワード テストすることをシミュレートします。

ここで、サンプル外データの分離を実装してみましょう。タイムスタンプに基づいてデータを並べ替え、最後の 5% の回数のしきい値を見つけます。このようにデータを分離することで、サンプル外のセットに将来のデータが確実に含まれるようになり、データ漏洩やテストの偏りが防止されます。分離すると、検証データとトレーニング データが得られます。

先に進む前に、検証データとトレーニング データの両方を前処理する必要があることに注意することが重要です。シーケンスを作成し、データのバランスをとり、正規化し、スケーリングし、その他の必要なタスクを実行します。このプロセスを合理化するために、DataFrame を入力として受け取り、これらすべての前処理ステップを実行する preprocess_df という関数を作成しましょう。

まず、sklearn ライブラリから前処理モジュールをインポートします。インストールしていない場合は、pip install sklearn を実行してインストールできます。次に、DataFrame をパラメータとして受け取る preprocess_df 関数を定義します。

関数内では、まず不要な future 列を DataFrame から削除します。次に、DataFrame の列を反復処理し、変化率変換を適用します。この正規化ステップは、仮想通貨間でさまざまな規模の価格と出来高を処理するのに役立ちます。

データを正規化した後、トレーニング中に問題が発生する可能性があるため、NaN 値を含む行を削除します。次に、preprocessing.scale 関数を使用して、値を 0 と 1 の間でスケーリングします。または、独自のスケーリング ロジックを実装することもできます。

データの前処理が完了したので、連続データの処理に進みましょう。 sequence_data という空のリストを作成し、最大長 60 の prev_days という deque オブジェクトを初期化します。 deque オブジェクトを使用すると、新しい項目を効率的に追加し、最大長に達したときに古い項目を自動的に削除できます。

次に、DataFrame の値を反復処理します。これには、正規化およびスケーリングされたデータが含まれています。各行の値を prev_days デキューに追加します。デキューの長さが少なくとも 60 に達したら、sequential_data への入力を開始します。

for i in DF.values:
    # Create a deque object with a maximum length of max_len
    if len(prev_days) < max_len:
        prev_days.append([n for n in i[:-1]])
    else:
        # Append the current values to prev_days
        prev_days.append([n for n in i[:-1]])
        # Add the sequence to the sequential_data list
        sequential_data.append([np.array(prev_days), i[-1]])
        # Remove the oldest sequence from prev_days
        prev_days.popleft()


このコード スニペットでは、データ フレーム DF の値を反復処理します。 prev_days (deque オブジェクト) の長さが max_len より小さいかどうかを確認します。そうであれば、現在の値 (i[:-1]) を prev_days に追加します。それ以外の場合は、現在の値を prev_days に追加し、シーケンス [np.array(prev_days), i[-1]] を sequence_data リストに追加し、prev_days.popleft() を使用して prev_days から最も古いシーケンスを削除します。

シーケンスを生成したので、データのバランスをとる作業に進むことができます。バランスをとることは、トレーニング データ内の特定のクラスに対する偏りを防ぐために重要です。この場合、クラスはさまざまな価格変動 (上昇または下降) です。データのバランスをとるために、各クラスの出現数をカウントし、多数派のクラスが少数派のクラスと一致するようにシーケンスの数を制限します。

buys = []
sells = []

for seq, target in sequential_data:
    if target == 0:
        sells.append([seq, target])
    elif target == 1:
        buys.append([seq, target])

# Determine the minimum number of sequences in buys and sells
lower = min(len(buys), len(sells))

# Balance the data by randomly selecting the required number of sequences from buys and sells
buys = buys[:lower]
sells = sells[:lower]

# Concatenate buys and sells to create balanced_data
balanced_data = buys + sells

# Shuffle the balanced_data
random.shuffle(balanced_data)


上記のコードでは、買いと売りの 2 つの別々のリストを作成します。 sequence_data リストを反復処理し、対応するターゲット値を持つシーケンスをそれぞれのリストに追加します。次に、買いと売りの間のシーケンスの最小数を決定します。データのバランスをとるために、両方のリストをこの最小数に制限します。次に、買いと売りを連結して、balanced_data を作成します。最後に、ランダム性を確保するために、balanced_data をシャッフルします。

データのバランスをとった後、それを入力フィーチャ (X) 配列とターゲット ラベル (y) 配列に分割できます。

X = []
y = []

for seq, target in balanced_data:
    X.append(seq)
    y.append(target)

# Convert X and y to numpy arrays
X = np.array(X)
y = np.array(y)


X を入力特徴として、y をターゲット ラベルとして取得したので、データをトレーニング セットと検証セットに分割することに進むことができます。

# Split the data into training and validation sets
train_x, val_x, train_y, val_y = train_test_split(X, y, test_size=0.2, random_state=42)


上記のコードでは、scikit-learn の train_test_split 関数を使用して、データをトレーニング セットと検証セットに分割します。データの 80% をトレーニング セット (train_x と train_y) に割り当て、20% をトレーニング セットに割り当てます。

# Normalize the data
scaler = MinMaxScaler()
train_x = scaler.fit_transform(train_x.reshape(train_x.shape[0], -1))
val_x = scaler.transform(val_x.reshape(val_x.shape[0], -1))

# Reshape the data back to its original shape
train_x = train_x.reshape(train_x.shape[0], train_x.shape[1], -1)
val_x = val_x.reshape(val_x.shape[0], val_x.shape[1], -1)


上記のコードでは、scikit-learn の MinMaxScaler を使用して入力特徴 (train_x と val_x) を正規化します。 fit_transform メソッドは、スケーラーを適合させてデータを正規化するためにトレーニング セットで使用されます。次に、検証セットに対して変換メソッドを使用して、トレーニング セットに基づいて同じスケーリングを適用します。データは、目的の形状に一致するように、スケーリングの前後で再形成されます。

データが準備できたら、LSTM モデルを構築してトレーニングできるようになります。

model = Sequential()
model.add(LSTM(units=128, input_shape=(train_x.shape[1:]), return_sequences=True))
model.add(Dropout(0.2))
model.add(BatchNormalization())

model.add(LSTM(units=128, return_sequences=True))
model.add(Dropout(0.2))
model.add(BatchNormalization())

model.add(LSTM(units=128))
model.add(Dropout(0.2))
model.add(BatchNormalization())

model.add(Dense(units=32, activation='relu'))
model.add(Dropout(0.2))

model.add(Dense(units=2, activation='softmax'))

# Define the optimizer and compile the model
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)
model.compile(loss='sparse_categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])

# Define early stopping
early_stopping = tf.keras.callbacks.EarlyStopping(patience=3)

# Train the model
history = model.fit(train_x, train_y, validation_data=(val_x, val_y), epochs=20, callbacks=[early_stopping])


上記のコードでは、Sequential() を使用してシーケンシャル モデルを定義します。それぞれ 128 ユニットを持つ 3 つの LSTM 層を追加し、その後にオーバーフィッティングを防ぐためにレート 0.2 のドロップアウト層を追加します。バッチ正規化は、各 LSTM 層の後に適用されます。次に、32 ユニットと ReLU 活性化関数を含む高密度層を追加し、その後に別のドロップアウト層を追加します。最後に、2 つのユニット (買いと売りの 2 つのクラスを表す) とソフトマックス アクティベーション関数を含む高密度レイヤーを追加します。

オプティマイザーを学習率 0.001 の Adam として定義し、スパース カテゴリカル クロス エントロピーを損失関数として、精度をメトリクスとして使用してモデルをコンパイルします。

早期停止は、EarlyStopping コールバックを使用して定義され、検証損失を監視し、3 エポック後に改善しない場合はトレーニングを停止します。

モデルは、fit 関数を使用してトレーニングされ、トレーニング データ (train_x と train_y)、検証データ (val_x と val_y)、および定義されたコールバックが渡されます。トレーニングは 20 エポックにわたって実行されます。

特定の要件に基づいて、モデル アーキテクチャ、ハイパーパラメータ、トレーニング構成を調整できます。

# Evaluate the model
test_x = scaler.transform(test_x.reshape(test_x.shape[0], -1))
test_x = test_x.reshape(test_x.shape[0], test_x.shape[1], -1)

loss, accuracy = model.evaluate(test_x, test_y)
print(f'Test Loss: {loss:.4f}')
print(f'Test Accuracy: {accuracy*100:.2f}%')


上記のコードでは、テスト データを使用してトレーニングされたモデルを評価します。まず、スケーラーの変換メソッドを使用してテスト入力データを正規化し、目的の形状に一致するように再形成します。

次に、モデルの評価メソッドを使用して、テスト データの損失と精度を計算します。 Evaluate メソッドは、テスト入力データ (test_x) と対応するグラウンド トゥルース ラベル (test_y) を受け取ります。計算された損失と精度がコンソールに出力されます。

スクリプトの先頭で必要なモジュールを忘れずにインポートしてください。

import numpy as np
import tensorflow as tf
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dropout, BatchNormalization, Dense


さらに、コードを実行する前に、必要なデータセット (train_x、train_y、val_x、val_y、test_x、test_y) が準備されていることを確認してください。

このコードを使用すると、売買分類タスク用に LSTM モデルをトレーニングし、データを正規化し、テスト セットでのモデルのパフォーマンスを評価できます。特定の要件に応じて、自由に調整や変更を加えてください。

Normalizing and creating sequences Crypto RNN - Deep Learning w/ Python, TensorFlow and Keras p.9
Normalizing and creating sequences Crypto RNN - Deep Learning w/ Python, TensorFlow and Keras p.9
  • 2018.09.16
  • www.youtube.com
Leading up to this tutorial, we've learned about recurrent neural networks, deployed one on a simpler dataset, and now we are working on doing it with a more...