ホームページ > 記事 > テクノロジー周辺機器 > TensorFlow を使用してニューラル ネットワークを構築する方法
TensorFlow は、さまざまなニューラル ネットワークのトレーニングとデプロイに使用される人気のある機械学習フレームワークです。この記事では、TensorFlow を使用して単純なニューラル ネットワークを構築する方法について説明し、開始するためのサンプル コードを提供します。
ニューラル ネットワークを構築する最初のステップは、ネットワークの構造を定義することです。 TensorFlow では、tf.keras モジュールを使用してニューラル ネットワークの層を定義できます。次のコード例では、2 つの隠れ層と 1 つの出力層を持つ完全接続フィードフォワード ニューラル ネットワークを定義します。 「」パイソン テンソルフロー asf をインポートする モデル = tf.keras.models.Sequential([ tf.keras.layers.Dense(units=64,activation='relu',input_shape=(input_dim,)), tf.keras.layers.Dense(単位=32、アクティベーション='relu')、 tf.keras.layers.Dense(units=output_dim、activation='softmax') ]) 「」 上記のコードでは、「Sequential」モデルを使用してニューラル ネットワークを構築します。 「密」層は全結合層を表し、各層のニューロン (ユニット) の数と活性化関数 (活性化) を指定します。最初の隠れ層の入力形状は `input_shape
import tensorflow as tf model = tf.keras.Sequential([ tf.keras.layers.Dense(64, activation='relu', input_shape=(784,)), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ])
で与えられます。この例では、Sequential モデルを使用してニューラル ネットワークを定義します。これは、各レイヤーが前のレイヤーの上に構築される単純なスタッキング モデルです。 3 つの層を定義します。最初の層と 2 番目の層は両方とも 64 個のニューロンを持つ全結合層であり、ReLU 活性化関数を使用します。 MNIST 手書き数字データセットを使用するため、入力レイヤーの形状は (784,) であり、このデータセット内の各画像は 28x28 ピクセルであり、784 ピクセルに拡張されます。最後の層は、ソフトマックス活性化関数を使用する 10 個のニューロンを含む完全接続層で、MNIST データセットでの数字分類などの分類タスクに使用されます。
モデルをコンパイルし、オプティマイザー、損失関数、評価メトリクスを指定する必要があります。以下に例を示します。
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
この例では、Adam オプティマイザーを使用して、マルチクラス分類問題の損失関数としてクロスエントロピーを使用してモデルをトレーニングします。また、トレーニングおよび評価中にモデルのパフォーマンスを追跡するための評価指標として精度も指定しました。
モデルの構造とトレーニング構成を定義したので、データを読み取り、モデルのトレーニングを開始できます。例として MNIST 手書き数字データセットを使用します。コード例を次に示します。
from tensorflow.keras.datasets import mnist (train_images, train_labels), (test_images, test_labels) = mnist.load_data() train_images = train_images.reshape((60000, 784)) train_images = train_images.astype('float32') / 255 test_images = test_images.reshape((10000, 784)) test_images = test_images.astype('float32') / 255 train_labels = tf.keras.utils.to_categorical(train_labels) test_labels = tf.keras.utils.to_categorical(test_labels) model.fit(train_images, train_labels, epochs=5, batch_size=64)
この例では、mnist.load_data() 関数を使用して MNIST データセットをロードします。次に、トレーニング画像とテスト画像を 784 ピクセルに平坦化し、ピクセル値を 0 から 1 の間になるようにスケーリングしました。また、ラベルを分類タスクに変換するためにラベルをワンホット エンコードします。最後に、fit 関数を使用してモデルをトレーニングします。トレーニング画像とラベルを使用し、5 エポックのトレーニングを指定し、各エポックに 64 個のサンプルを使用します。
トレーニングが完了したら、評価関数を使用して、テスト セットでのモデルのパフォーマンスを評価できます。
test_loss, test_acc = model.evaluate(test_images, test_labels) print('Test accuracy:', test_acc)
この例では、評価関数を次のように呼び出します。テスト画像とラベル機能を使用し、結果を印刷して、テスト セット上のモデルの精度を示します。
これは、TensorFlow を使用してニューラル ネットワークを構築およびトレーニングする方法の簡単な例です。もちろん、実際のアプリケーションでは、より複雑なネットワーク構造やより複雑なデータ セットが必要になる場合があります。ただし、この例は、TensorFlow の基本的な使用法を理解するのに役立つ出発点となります。
完全なコード例は次のとおりです:
import tensorflow as tf from tensorflow.keras.datasets import mnist # Define the model architecture model = tf.keras.Sequential([ tf.keras.layers.Dense(64, activation='relu', input_shape=(784,)), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) # Compile the model model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # Load the data (train_images, train_labels), (test_images, test_labels) = mnist.load_data() train_images = train_images.reshape((60000, 784)) train_images = train_images.astype('float32') / 255 test_images = test_images.reshape((10000, 784)) test_images = test_images.astype('float32') / 255 train_labels = tf.keras.utils.to_categorical(train_labels) test_labels = tf.keras.utils.to_categorical(test_labels) # Train the model model.fit(train_images, train_labels, epochs=5, batch_size=64) # Evaluate the model test_loss, test_acc = model.evaluate(test_images, test_labels) print('Test accuracy:', test_acc)
上記は、TensorFlow を使用してニューラル ネットワークを構築するためのコード例です。これは、2 つの隠れ層を含む層を定義します。完全に接続されたフィードフォワード ニューラル ネットワークは、MNIST 手書き数字データセットを使用し、Adam オプティマイザーとクロスエントロピー損失関数を使用してトレーニングおよびテストされています。最終出力はテスト セットの精度です。
以上がTensorFlow を使用してニューラル ネットワークを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。