大量のデータを分類する場合、このデータを手動で処理するのは非常に時間がかかり、困難な作業です。この場合、分類にニューラル ネットワークを使用すると、作業を迅速かつ簡単に行うことができます。 Python には成熟した使いやすいニューラル ネットワーク ライブラリが多数あるため、Python を選択することをお勧めします。この記事では、Python で分類にニューラル ネットワークを使用する方法について説明します。
ニューラル ネットワークを分類に使用する方法を説明する前に、ニューラル ネットワークの概念を簡単に理解する必要があります。ニューラル ネットワークは、大量の入力データと出力データ間の関係に基づいてモデルを構築し、未知のデータの特定のプロパティを予測する計算モデルです。このモデルは分類問題で非常に優れたパフォーマンスを発揮し、写真、電子メール、音声などのさまざまな種類のデータを分類するために使用できます。
分類はニューラル ネットワークの主なアプリケーションの 1 つです。分類問題の目的は、データをさまざまなカテゴリに分類することです。たとえば、画像認識では、ニューラル ネットワークはさまざまな画像を猫、犬、車などのさまざまなカテゴリに分類できます。この場合、ニューラル ネットワークは画像を入力データとして受け取り、分類を出力データとして受け取ります。分類はデータをさまざまなカテゴリに分類するプロセスであり、通常は教師あり学習手法を使用します。
Python には、TensorFlow、Keras、PyTorch など、選択できるニューラル ネットワーク ライブラリが多数あります。この記事では、Google Brain チームが開発したオープンソースの人工知能ライブラリである TensorFlow を使用します。 TensorFlow は、学習と使用が簡単な非常に人気のあるフレームワークであり、多数の機械学習プロジェクトで使用されています。
TensorFlow をインストールしていない場合は、ターミナルまたはコマンド プロンプトを開いて次のコマンドを入力します。
pip install tensorflow
インストールが完了したら、次のことができます。 TensorFlow ライブラリを使用します。
データ準備は、分類タスクの重要なステップです。データは、ニューラル ネットワークが理解できる数値形式に変換する必要があります。ここでは、非常に人気のあるデータセット MNIST を紹介します。これはデジタル画像で構成されており、各画像は数字を表します。 MNIST データセットは TensorFlow で利用でき、次のコマンドを使用してデータを直接ロードできます:
from tensorflow.keras.datasets import mnist
(x_train, y_train), (x_test, y_test) ) = mnist.load_data()
このコマンドは、ニューラル ネットワークのトレーニングに使用される変数 x_train および y_train に MNIST データセットをロードします。テスト データは変数 x_test および y_test にロードされ、ニューラル ネットワークのテストに使用されます。 x_train と x_test には数値画像データが含まれ、y_train と y_test には数値画像のラベルが含まれます。
次に、データセットを見てさらに詳しく見てみましょう:
print('x_train Shape:', x_train.shape)
print('y_train Shape :' 、y_train.shape)
print('x_testshape:', x_test.shape)
print('y_testshape:', y_test.shape)
at出力すると、次の情報が表示されます。
xx_train 形状: (60000, 28, 28)
y_train 形状: (60000,)
x_test 形状: (10000 , 28, 28)
y_test 形状: (10000,)
これは、トレーニング データ セットに 60000 個のデジタル画像が含まれており、各画像は 28 ピクセル x 28 ピクセルであることを示しています。テスト データセットには 10,000 枚の画像があります。
データを準備した後、ニューラル ネットワーク モデルを選択する必要があります。 2 つの完全に接続された層 (密) で構成される非常に単純なニューラル ネットワーク モデルを選択します。最初の完全に接続された層には 128 個のニューロンが含まれ、2 番目の完全に接続された層には 10 個のニューロンが含まれます。コードは次のとおりです。
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
model = Sequential()
model.add(Flatten(input_shape=(28, 28)))
model.add(Dense(128,activation='relu'))
model.add(Dense (10、activation='softmax'))
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy' ])
ここでは、最初に Sequential モデルを作成し、次に 28x28 の画像データを 1 次元配列に平坦化するために使用される Flatten レイヤーを追加しました。次に、128 個のニューロンを含む全結合層を追加し、活性化関数として ReLU を使用しました。最後に、10 個のニューロンを含む別の全結合層を追加し、Softmax 活性化関数を使用して各数値の確率分布を取得します。モデルは、adam オプティマイザーとスパース カテゴリ クロス エントロピー損失関数を使用してコンパイルされます。
データとモデルを準備しました。次に、トレーニング データを使用してモデルをトレーニングする必要があります。次のコマンドを使用してモデルをトレーニングできます:
history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))
このコードでは 10 を使用します。エポック (エポック) を使用してモデルをトレーニングし、テスト セットを検証に使用します。トレーニングが完了したら、次のコードを使用してモデルを評価できます:
test_loss, test_acc = model.evaluate(x_test, y_test)
print('テスト精度:', test_acc)
出力には、テスト セットの精度メトリクスが表示されます。
モデルをトレーニングして評価した後、そのモデルを使用して未知のデータを予測できます。次のコードを使用して画像のラベルを予測できます:
import numpy as np
image_index = 7777 # 0
img = x_test[image_index]# から開始
##img = np.expand_dims(img, axis=0)predictions = model.predict(img)print(predictions)print(" Predicted label :", np.argmax(predictions))出力では、イメージが番号 2 であると予測されていることがわかります。以上がPython で分類にニューラル ネットワークを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。