"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Construindo uma Rede Neural Convolucional Básica (CNN) em Python

Construindo uma Rede Neural Convolucional Básica (CNN) em Python

Publicado em 01/11/2024
Navegar:587

Building a Basic Convolutional Neural Network (CNN) in Python

Redes Neurais Convolucionais (CNNs) são ferramentas poderosas para tarefas de processamento e reconhecimento de imagens. Eles são projetados para aprender hierarquias espaciais de recursos de forma automática e adaptativa por meio de retropropagação. Vamos mergulhar na construção de uma CNN básica usando Python e TensorFlow/Keras.

? Pré-requisitos

Antes de começar, certifique-se de ter as seguintes bibliotecas instaladas:

pip install tensorflow numpy matplotlib

?️ Etapa 1: importar as bibliotecas necessárias

Comece importando as bibliotecas essenciais:

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

?️ Etapa 2: carregar e pré-processar o conjunto de dados

Para este exemplo, usaremos o conjunto de dados CIFAR-10, que consiste em 60.000 imagens coloridas 32x32 em 10 classes.

# 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

? Etapa 3: construir o modelo CNN

Agora, vamos construir o modelo CNN. Este modelo incluirá as camadas principais: camadas Convolucionais, Pooling e Densas.

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'))

? Etapa 4: compilar o modelo

A compilação do modelo envolve a especificação do otimizador, da função de perda e das métricas a serem monitoradas durante o treinamento.

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

? Etapa 5: treinar o modelo

Treine o modelo CNN nos dados de treinamento por algumas épocas.

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

? Etapa 6: avaliar o modelo

Após o treinamento, avalie o modelo nos dados de teste para ver seu desempenho.

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

?️ Etapa 7: Visualize os resultados do treinamento

Finalmente, vamos visualizar a precisão e a perda ao longo das épocas de treinamento.

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()

? Conclusão

Este modelo básico da CNN serve como um excelente ponto de partida para lidar com tarefas de classificação de imagens. Ao compreender e modificar esse modelo, você poderá experimentar diferentes arquiteturas e técnicas para aprimorar o desempenho do seu modelo. Continue explorando e ajustando as camadas para construir redes neurais ainda mais poderosas! ?


Este código foi projetado para ser fácil de seguir e modificar, tornando-o adequado para iniciantes e para aqueles que desejam começar a usar CNNs em Python.

Link do blog para arquitetura CNN: https://dev.to/abhinowww/demystifying-cnn-neural-network-layers-a-deep-dive-into-ai-architecture-12d2

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/abhinowww/building-a-basic-convolutional-neural-network-cnn-in-python-3bab?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3