畳み込みニューラル ネットワーク (CNN) は、画像認識、音声認識、自然言語処理などの分野で広く使用されているニューラル ネットワーク アルゴリズムです。生物学的ニューロンの構造を利用し、入力データの二次元空間構造を処理し、畳み込み層とプーリング層で重み共有手法を採用することで、最適化が必要なパラメータの数を大幅に削減し、データの性能を向上させます。モデルの汎化能力と効率性。
Python は、科学計算、機械学習、深層学習の分野で広く使用されているプログラミング言語です。シンプルで使いやすく、オープンソースで無料、サードパーティ ライブラリが豊富であるという利点があります。ますます多くの研究者によって使用され、開発ツールとしてエンジニアに選ばれています。 Python では、Keras、TensorFlow、PyTorch など、さまざまな深層学習フレームワークを使用して畳み込みニューラル ネットワーク アルゴリズムを実装できます。
以下では、例を使用して、Keras フレームワークを使用して Python で畳み込みニューラル ネットワーク アルゴリズムを実装する方法を紹介します。
データセットの概要
この例では、CIFAR-10 データ セットを使用します。このデータ セットには、10 のカテゴリに 60,000 個の 32x32 カラー画像が含まれており、各カテゴリの画像数は 6,000 です。これらの画像はトレーニング セットとテスト セットに分割され、トレーニング セットには 50,000 枚の画像、テスト セットには 10,000 枚の画像が含まれます。
Python では、以下に示すように、Keras ライブラリが提供する cifar10.load_data 関数を使用して CIFAR-10 データ セットをロードできます。
from keras.datasets import cifar10 (x_train, y_train), (x_test, y_test) = cifar10.load_data()
その中で、x_train と x_test はそれぞれトレーニング セットと x_test テスト セットの画像データ、y_train と y_test はそれぞれトレーニング セットとテスト セットのラベルです。
モデルの構築
この例で使用される畳み込みニューラル ネットワーク モデルには、複数の畳み込み層、プーリング層、および全結合層が含まれています。具体的な構造は次のとおりです:
Python では、以下に示すように、Keras ライブラリによって提供される Sequential クラスを通じてモデルをレイヤーごとに構築できます。
from keras.models import Sequential from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense model = Sequential() model.add(Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), activation='relu', input_shape=(32, 32, 3))) model.add(Conv2D(filters=64, kernel_size=(3, 3), strides=(1, 1), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) model.add(Conv2D(filters=128, kernel_size=(3, 3), strides=(1, 1), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) model.add(Flatten()) model.add(Dense(units=128, activation='relu')) model.add(Dense(units=10, activation='softmax')) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
その中で、Conv2D クラスは畳み込みを表します。 Layer と MaxPooling2D クラスはプーリング層を表し、Flatten クラスは 1 次元の多次元入力を表し、Dense クラスは完全に接続された層を表します。 model.compile関数はモデルをコンパイルし、最適化アルゴリズム、損失関数、評価指標などを指定するために使用されます。
モデルのトレーニングと評価
モデルの構築後、トレーニング セット データを使用してモデルをトレーニングできます。 Python では、以下に示すように、fit 関数を使用してモデル トレーニングを実装できます:
from keras.utils import np_utils y_train = np_utils.to_categorical(y_train, 10) y_test = np_utils.to_categorical(y_test, 10) model.fit(x_train, y_train, epochs=10, batch_size=64, validation_data=(x_test, y_test))
その中で、np_utils.to_categorical 関数は、ラベルをワンホット エンコーディングに変換するために使用されます。 Fit 関数は、トレーニング ラウンド数、バッチ サイズ、検証セット データなどを指定してモデルをトレーニングするために使用されます。トレーニングが完了したら、以下に示すように、評価関数を使用してモデルを評価できます。
loss, accuracy = model.evaluate(x_test, y_test)
この例では、10 ラウンドのトレーニング後、テスト セットでのモデルの精度は 0.7318 です。
概要
この記事では、Keras フレームワークを使用して Python で畳み込みニューラル ネットワーク アルゴリズムを実装する例を紹介します。 CIFAR-10 データセットと特定のモデル構造を使用することで、Python で畳み込みニューラル ネットワークを構築、トレーニング、評価する方法を学ぶことができます。さらに、モデルの構造とパラメータを調整することで、モデルのパフォーマンスをさらに向上させることができます。
以上がPython での畳み込みニューラル ネットワーク アルゴリズムの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。