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

WBOY
リリース: 2024-08-28 18:33:07
オリジナル
836 人が閲覧しました

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

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!