「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python での基本的な畳み込みニューラル ネットワーク (CNN) の構築

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

2024 年 11 月 1 日に公開
ブラウズ:853

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

リリースステートメント この記事は次の場所に転載されています: https://dev.to/abhinowww/building-a-basic-convolutional-neural-network-cnn-in-python-3bab?1 侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3