ホームページ  >  記事  >  バックエンド開発  >  Python での基本的な畳み込みニューラル ネットワーク (CNN) の構築

Python での基本的な畳み込みニューラル ネットワーク (CNN) の構築

WBOY
WBOYオリジナル
2024-08-28 18:33:07870ブラウズ

Building a Basic Convolutional Neural Network (CNN) in Python

畳み込みニューラル ネットワーク (CNN) は、画像処理および認識タスクのための強力なツールです。これらは、バックプロパゲーションを通じてフィーチャの空間階層を自動的かつ適応的に学習するように設計されています。 Python と TensorFlow/Keras を使用して基本的な CNN を構築してみましょう。

?前提条件

始める前に、次のライブラリがインストールされていることを確認してください:

pip install tensorflow numpy matplotlib

?️ ステップ 1: 必要なライブラリをインポートする

まず、必須ライブラリをインポートします。

import tensorflow as tf
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt

?️ ステップ 2: データセットをロードして前処理する

この例では、10 クラスの 60,000 個の 32x32 カラー画像で構成される CIFAR-10 データセットを使用します。

# Load the CIFAR-10 dataset
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()

# Normalize the pixel values to be between 0 and 1
x_train, x_test = x_train / 255.0, x_test / 255.0

?ステップ 3: CNN モデルを構築する

それでは、CNN モデルを構築しましょう。このモデルには、畳み込み層、プーリング層、および高密度層という主要な層が含まれます。

model = models.Sequential()

# First Convolutional Layer
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))

# Second Convolutional Layer
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))

# Third Convolutional Layer
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

# Flatten the output and add Dense layers
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))

?ステップ 4: モデルをコンパイルする

モデルのコンパイルには、トレーニング中に監視するオプティマイザー、損失関数、メトリクスの指定が含まれます。

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

?ステップ 5: モデルをトレーニングする

数エポックのトレーニング データで CNN モデルをトレーニングします。

history = model.fit(x_train, y_train, epochs=10, 
                    validation_data=(x_test, y_test))

?ステップ 6: モデルを評価する

トレーニング後、テスト データでモデルを評価し、パフォーマンスがどの程度優れているかを確認します。

test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f'\nTest accuracy: {test_acc}')

?️ ステップ 7: トレーニング結果を視覚化する

最後に、トレーニング エポックにわたる精度と損失を視覚化しましょう。

plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0, 1])
plt.legend(loc='lower right')
plt.show()

?結論

この基本的な CNN モデルは、画像分類タスクに取り組むための優れた出発点として機能します。このモデルを理解して変更することで、さまざまなアーキテクチャや手法を試してモデルのパフォーマンスを向上させることができます。レイヤーの探索と微調整を続けて、さらに強力なニューラル ネットワークを構築してください。 ?


このコードは、理解しやすく変更しやすいように設計されており、初心者や Python で CNN を始めようとしている人に適しています。

CNN アーキテクチャのブログ リンク:https://dev.to/abhinowww/demystifying-cnn-neural-network-layers-a-deep-dive-into-ai-architecture-12d2

以上がPython での基本的な畳み込みニューラル ネットワーク (CNN) の構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。