畳み込みニューラル ネットワーク (CNN) は、画像処理および認識タスクのための強力なツールです。これらは、バックプロパゲーションを通じてフィーチャの空間階層を自動的かつ適応的に学習するように設計されています。 Python と TensorFlow/Keras を使用して基本的な CNN を構築してみましょう。
始める前に、次のライブラリがインストールされていることを確認してください:
pip install tensorflow numpy matplotlib
まず重要なライブラリをインポートします:
import tensorflow as tf from tensorflow.keras import layers, models import matplotlib.pyplot as plt
この例では、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
それでは、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'))
モデルのコンパイルには、トレーニング中に監視するオプティマイザー、損失関数、メトリクスの指定が含まれます。
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
いくつかのエポックのトレーニング データで CNN モデルをトレーニングします。
history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))
トレーニング後、テスト データでモデルを評価し、パフォーマンスがどの程度優れているかを確認します。
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) print(f'\nTest accuracy: {test_acc}')
最後に、トレーニング エポックにわたる精度と損失を視覚化しましょう。
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
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3