Python での畳み込みニューラル ネットワーク アルゴリズムの例

王林
リリース: 2023-06-11 12:37:37
オリジナル
1501 人が閲覧しました

畳み込みニューラル ネットワーク (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 はそれぞれトレーニング セットとテスト セットのラベルです。

モデルの構築

この例で使用される畳み込みニューラル ネットワーク モデルには、複数の畳み込み層、プーリング層、および全結合層が含まれています。具体的な構造は次のとおりです:

  1. 入力レイヤー: 入力イメージのサイズは 32x32x3 で、3 は 3 つの RGB チャネルを表します。
  2. 畳み込み層 1: サイズ 3x3 の 32 個の畳み込みカーネルを使用し、ストライドは 1、活性化関数は ReLU です。
  3. 畳み込み層 2: サイズ 3x3 の 64 個の畳み込みカーネルを使用し、ストライドは 1、活性化関数は ReLU です。
  4. プーリング層 1: サイズ 2x2、ストライド 2 のプーリング カーネルを使用します。
  5. 畳み込み層 3: サイズ 3x3 の 128 個の畳み込みカーネルを使用し、ストライドは 1、活性化関数は ReLU です。
  6. プーリング層 2: サイズ 2x2、ストライド 2 のプーリング カーネルを使用します。
  7. 全結合層 1: 128 個のニューロンが含まれており、活性化関数は ReLU です。
  8. 全結合層 2: 10 個のカテゴリに対応する 10 個のニューロンが含まれており、活性化関数は Softmax です。

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート