Este artigo foi publicado como parte do Data Science Blogathon
Los diversos métodos de aprendizado profundoAqui está o caminho de aprendizado para dominar o aprendizado profundo em, Uma subdisciplina da inteligência artificial, depende de redes neurais artificiais para analisar e processar grandes volumes de dados. Essa técnica permite que as máquinas aprendam padrões e executem tarefas complexas, como reconhecimento de fala e visão computacional. Sua capacidade de melhorar continuamente à medida que mais dados são fornecidos a ele o torna uma ferramenta fundamental em vários setores, da saúde... utilizan datos para entrenar algoritmos de redes neuronales para realizar una variedad de tareas de aprendizaje automático, como a classificação de diferentes classes de objetos. Redes neurais convolucionais são algoritmos de aprendizado profundo muito poderosos para análise de imagens. Este artigo irá explicar como construir, treinar e avaliar redes neurais convolucionais.
Você também aprenderá como melhorar sua capacidade de aprender com os dados e interpretar os resultados do treinamento.. O Deep Learning tem várias aplicações, como processamento de imagem, processamento de linguagem natural, etc. Também é usado em Ciências Médicas, Mídia e entretenimento, Carros Autônomos, etc.
O que é CNN?
CNN é um algoritmo poderoso para processamento de imagem. Esses algoritmos são atualmente os melhores algoritmos que temos para processamento automatizado de imagens.. Muitas empresas usam esses algoritmos para fazer coisas como identificar objetos em uma imagem.
As imagens contêm dados de combinação RGB. Matplotlib pode ser usado para importar uma imagem de um arquivo para a memória. O computador não vê uma imagem, tudo que você vê é uma matriz de números. Imagens coloridas são armazenadas em matrizes tridimensionais. As primeiras duas dimensões correspondem à altura e largura da imagem (o número de pixels). La última dimensão"Dimensão" É um termo usado em várias disciplinas, como a física, Matemática e filosofia. Refere-se à extensão em que um objeto ou fenômeno pode ser analisado ou descrito. Em física, por exemplo, fala-se de dimensões espaciais e temporais, enquanto em matemática pode se referir ao número de coordenadas necessárias para representar um espaço. Compreendê-lo é fundamental para o estudo e... corresponde a los colores rojo, verde e azul presentes em cada pixel.
Três camadas da CNN
Redes neurais convolucionais especializadas para aplicações de reconhecimento de imagem e vídeo. CNN é usado principalmente em tarefas de análise de imagem, como reconhecimento de imagem, detección de objetos y O desempenho é exibido como gráficos de dispersão e caixaLa segmentación es una técnica clave en marketing que consiste en dividir un mercado amplio en grupos más pequeños y homogéneos. Esta práctica permite a las empresas adaptar sus estrategias y mensajes a las características específicas de cada segmento, mejorando así la eficacia de sus campañas. La segmentación puede basarse en criterios demográficos, psicográficos, geográficos o conductuales, facilitando una comunicación más relevante y personalizada con el público objetivo.....
Existem três tipos de camadas em redes neurais convolucionais:
1) Capa convolucionalLa capa convolucional, fundamental en las redes neuronales convolucionales (CNN), se utiliza principalmente para el procesamiento de datos con estructuras en forma de cuadrícula, como fotos. Esta capa aplica filtros que extraen características relevantes, como bordes y texturas, permitiendo que el modelo reconozca patrones complejos. Su capacidad para reducir la dimensionalidad de los datos y mantener información esencial la convierte en una herramienta clave en tareas de visión por computadora...: em uma neuronal vermelhoAs redes neurais são modelos computacionais inspirados no funcionamento do cérebro humano. Eles usam estruturas conhecidas como neurônios artificiais para processar e aprender com os dados. Essas redes são fundamentais no campo da inteligência artificial, permitindo avanços significativos em tarefas como reconhecimento de imagem, Processamento de linguagem natural e previsão de séries temporais, entre outros. Sua capacidade de aprender padrões complexos os torna ferramentas poderosas.. típica, cada neurônio de entrada é conectado à próxima camada oculta. E CNN, solo una pequeña región de las neuronas de la camada de entradao "camada de entrada" se refiere al nivel inicial en un proceso de análisis de datos o en arquitecturas de redes neuronales. Su función principal es recibir y procesar la información bruta antes de que esta sea transformada por capas posteriores. En el contexto de machine learning, una adecuada configuración de la capa de entrada es crucial para garantizar la efectividad del modelo y optimizar su rendimiento en tareas específicas.... se conecta a la capa oculta de neuronas.
2) Camada de agrupamento: camada de agrupamento é usada para reduzir a dimensionalidade do mapa de feições. Haverá várias camadas de ativação e agrupamento dentro da camada oculta da CNN.
3) Camada totalmente conectada: Camadas totalmente conectadas formar o último capas na rede. A entrada para o camada totalmente conectada é a saída do agrupamento ou convolução final Capa, que é achatado e, em seguida, introduzido no camada totalmente conectada.
Conjunto de dados MNIST
Neste artigo, vamos trabalhar no reconhecimento de objetos em dados de imagem usando o conjunto de dados MNIST para reconhecimento de dígitos manuscritos.
O conjunto de dados MNIST consiste em imagens de dígitos de uma variedade de documentos digitalizados. Cada imagem é um quadrado de 28 x 28 píxeis. Neste conjunto de dados, se utilizam 60.000 imagens para treinar o modelo e 10.000 fotos para testar o modelo. Existem 10 dígitos (0 uma 9) o 10 classes para prever.
Carregando o conjunto de dados MNIST
Instale la biblioteca de TensorFlow e importe el conjunto de datos como un conjunto de datos de TreinamentoO treinamento é um processo sistemático projetado para melhorar as habilidades, Conhecimento ou habilidades físicas. É aplicado em várias áreas, como esporte, Educação e desenvolvimento profissional. Um programa de treinamento eficaz inclui planejamento de metas, prática regular e avaliação do progresso. A adaptação às necessidades individuais e a motivação são fatores-chave para alcançar resultados bem-sucedidos e sustentáveis em qualquer disciplina.... y prueba.
Plote a saída amostral da imagem
!pip install tensorflow
from keras.datasets import mnist
import matplotlib.pyplot as plt
(X_train,y_train), (X_test, y_test)= mnist.load_data()
plt.subplot()
plt.imshow(X_train[9], cmap=plt.get_cmap('cinza'))
Produção:
Modelo de aprendizagem profunda com perceptrons multicamadas usando MNIST
Neste modelo, vamos criar um modelo de rede neural simples com uma única camada oculta para o conjunto de dados MNIST para reconhecimento de dígitos manuscritos.
Um perceptron é um modelo de neurônio único que é o bloco de construção das maiores redes neurais. O perceptron multicamadas consiste em três camadas, quer dizer, a camada de entrada, la capa oculta y la capa de salidao "capa de salida" es un concepto utilizado en el ámbito de la tecnología de la información y el diseño de sistemas. Se refiere a la última capa de un modelo de software o arquitectura que se encarga de presentar los resultados al usuario final. Esta capa es crucial para la experiencia del usuario, ya que permite la interacción directa con el sistema y la visualización de datos procesados..... A camada oculta não é visível para o mundo exterior. Apenas a camada de entrada e a camada de saída são visíveis. Para todos os modelos DL, os dados devem ser de natureza numérica.
Paso 1: importar bibliotecas-chave
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import np_utils
Paso 2: remodelar dados
Cada imagem tem um tamanho de 28X28, para o que há 784 píxeis. Então, a camada de saída tem 10 Saídas, a camada oculta tem 784 neurônios ea camada de entrada tem 784 ingressos. Mais tarde, o conjunto de dados torna-se um tipo de dados flutuante.
number_pix=X_train.forma[1]*X_train.shape[2] X_train=X_train.remodele(X_train.shape[0], number_pix).astype('float32') X_test=X_test.remodele(X_test.shape[0], number_pix).astype('float32')
Paso 3: normaliza dados
Os modelos NN geralmente requerem dados dimensionados. Neste trecho de código, os dados são normalizados a partir de (0-255) uma (0-1) e o variávelEm estatística e matemática, uma "variável" é um símbolo que representa um valor que pode mudar ou variar. Existem diferentes tipos de variáveis, e qualitativo, que descrevem características não numéricas, e quantitativo, representando quantidades numéricas. Variáveis são fundamentais em experimentos e estudos, uma vez que permitem a análise de relações e padrões entre diferentes elementos, facilitando a compreensão de fenômenos complexos.... de destino se codifica en un solo uso para su posterior análisis. A variável alvo tem um total de 10 aulas (0-9)
X_train=X_train/255
X_test=X_test/255
y_train= np_utils.to_categorical(y_train)
y_test= np_utils.to_categórico(y_test)
num_classes=y_train.forma[1]
imprimir(num_classes)
Produção:
10
Agora, vamos criar uma função NN_model e compilá-la
Paso 4: definir a função modelo
nn_model def(): modelo=Sequencial() model.add(Denso(number_pix, input_dim=number_pix, ativação = 'reler')) mode.add(Denso(num_classes, ativação = 'softmax')) model.compile(perda ="categorical_crossentropy", otimista="Adão", metrics =['precisão']) modelo de retorno
Há duas camadas, una es una capa oculta con la función de activación ReLuLa función de activación ReLU (Rectified Linear Unit) es ampliamente utilizada en redes neuronales debido a su simplicidad y eficacia. é definido como ( f(x) = max(0, x) ), lo que significa que produce una salida de cero para valores negativos y un incremento lineal para valores positivos. Su capacidad para mitigar el problema del desvanecimiento del gradiente la convierte en una opción preferida en arquitecturas profundas.... y la otra es la capa de salida que usa la función softmaxLa función softmax es una herramienta matemática utilizada en el campo del aprendizaje automático, especialmente en redes neuronales. Convierte un vector de valores en una distribución de probabilidad, asignando probabilidades a cada clase en problemas de clasificación múltiple. Su fórmula normaliza las salidas, asegurando que la suma de todas las probabilidades sea igual a uno, lo que permite interpretar los resultados de manera efectiva. Es fundamental en la optimización de....
Paso 5: execute o modelo
model = nn_model() model.fit(X_train, y_train, validação_data =(X_test,y_test),épocas = 10, batch_size = 200, verboso = 2) score = model.evaluate(X_test, y_test, verbose = 0) imprimir('O erro é: %.2f %% '%(100-pontuação[1]*100))
Produção:
Época 1/10 300/300 - 11s - perda: 0.2778 - precisão: 0.9216 - val_loss: 0.1397 - val_accuracy: 0.9604 Época 2/10 300/300 - 2s - perda: 0.1121 - precisão: 0.9675 - val_loss: 0.0977 - val_accuracy: 0.9692 Época 3/10 300/300 - 2s - perda: 0.0726 - precisão: 0.9790 - val_loss: 0.0750 - val_accuracy: 0.9778 Época 4/10 300/300 - 2s - perda: 0.0513 - precisão: 0.9851 - val_loss: 0.0656 - val_accuracy: 0.9796 Época 5/10 300/300 - 2s - perda: 0.0376 - precisão: 0.9892 - val_loss: 0.0717 - val_accuracy: 0.9773 Época 6/10 300/300 - 2s - perda: 0.0269 - precisão: 0.9928 - val_loss: 0.0637 - val_accuracy: 0.9797 Época 7/10 300/300 - 2s - perda: 0.0208 - precisão: 0.9948 - val_loss: 0.0600 - val_accuracy: 0.9824 Época 8/10 300/300 - 2s - perda: 0.0153 - precisão: 0.9962 - val_loss: 0.0581 - val_accuracy: 0.9815 Época 9/10 300/300 - 2s - perda: 0.0111 - precisão: 0.9976 - val_loss: 0.0631 - val_accuracy: 0.9807 Época 10/10 300/300 - 2s - perda: 0.0082 - precisão: 0.9985 - val_loss: 0.0609 - val_accuracy: 0.9828 O erro é: 1.72%
Nos resultados do modelo, es visible a mediro "medir" É um conceito fundamental em várias disciplinas, que se refere ao processo de quantificação de características ou magnitudes de objetos, Fenômenos ou situações. Na matemática, Usado para determinar comprimentos, Áreas e volumes, enquanto nas ciências sociais pode se referir à avaliação de variáveis qualitativas e quantitativas. A precisão da medição é crucial para obter resultados confiáveis e válidos em qualquer pesquisa ou aplicação prática.... que aumenta el número de épocas, melhora a precisão. O erro é de 1,72%, menor é o erro, quanto maior a precisão do modelo.
Modelo de rede neural convolucional usando MNIST
Nesta secção, criaremos modelos CNN simples para MNIST que demonstram camadas convolucionais, agrupamento de camadas e camadas de abandono.
Paso 1: importar todas as bibliotecas necessárias
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import np_utils
from keras.layers import Dropout
from keras.layers import Flatten
from keras.layers.convolutional import Conv2D
from keras.layers.convolutional import MaxPooling2D
Paso 2: Configure a semente para reprodutibilidade e carregue os dados MNIST
seed=10
np.random.seed(semente)
(X_train,y_train), (X_test, y_test)= mnist.load_data()
Paso 3: converter dados em valores flutuantes
X_train=X_train.remodele(X_train.shape[0], 1,28,28).astype('float32') X_test=X_test.remodele(X_test.shape[0], 1,28,28).astype('float32')
Paso 4: normaliza dados
X_train=X_train/255
X_test=X_test/255
y_train= np_utils.to_categorical(y_train)
y_test= np_utils.to_categórico(y_test)
num_classes=y_train.forma[1]
imprimir(num_classes)
Uma arquitetura clássica da CNN parece abaixo:
Camada de saída (10 Saídas) |
Manto oculto (128 neurônios) |
Camada plana |
Camada de abandono 20% |
Camada máxima de agrupamento 2 × 2 |
Capa convolucional 32 mapas, 5 × 5 |
Camada visível 1x28x28 |
A primeira camada oculta é uma camada convolucional chamada Convolution2D. Ele tem 32 mapas de características com tamanho 5 × 5 e função de moagem. Esta é a camada de entrada. A seguir está a camada de pool que assume o valor máximo chamado MaxPooling2D. Neste modelo, está configurado como um tamanho de pool de 2 × 2.
En la capa de abandono ocurre la regularizaçãoLa regularización es un proceso administrativo que busca formalizar la situación de personas o entidades que operan fuera del marco legal. Este procedimiento es fundamental para garantizar derechos y deberes, así como para fomentar la inclusión social y económica. En muchos países, la regularización se aplica en contextos migratorios, laborales y fiscales, permitiendo a quienes se encuentran en situaciones irregulares acceder a beneficios y protegerse de posibles sanciones..... Está configurado para excluir aleatoriamente o 20% neurônios de camada para evitar overfitting. A quinta camada é a camada achatada que converte os dados da matriz 2D em um vetor chamado Achatar. Permite que a saída seja totalmente processada por uma camada padrão totalmente conectada.
A seguir, a camada totalmente conectada é usada com 128 neuronas y la função de despertarLa función de activación es un componente clave en las redes neuronales, ya que determina la salida de una neurona en función de su entrada. Su propósito principal es introducir no linealidades en el modelo, permitiendo que aprenda patrones complejos en los datos. Existen diversas funciones de activación, como la sigmoide, ReLU y tanh, cada una con características particulares que afectan el rendimiento del modelo en diferentes aplicaciones.... del rectificador. Finalmente, a camada de saída tem 10 neurônios para 10 classes e uma função de gatilho softmax para gerar previsões do tipo probabilidade para cada classe.
Paso 5: execute o modelo
def cnn_model(): modelo=Sequencial() model.add(Conv2D(32,5,5, preenchimento = 'mesmo',input_shape =(1,28,28), ativação = 'reler')) model.add(MaxPooling2D(pool_size =(2,2), preenchimento = 'mesmo')) model.add(Cair fora(0.2)) model.add(Achatar()) model.add(Denso(128, ativação = 'reler')) model.add(Denso(num_classes, ativação = 'softmax')) model.compile(perda ="categorical_crossentropy", otimizador ="Adão", metrics =['precisão']) modelo de retorno
model = cnn_model() model.fit(X_train, y_train, validação_data =(X_test,y_test),épocas = 10, batch_size = 200, verboso = 2) score = model.evaluate(X_test, y_test, verbose = 0) imprimir('O erro é: %.2f %% '%(100-pontuação[1]*100))
Produção:
Época 1/10 300/300 - 2s - perda: 0.7825 - precisão: 0.7637 - val_loss: 0.3071 - val_accuracy: 0.9069 Época 2/10 300/300 - 1s - perda: 0.3505 - precisão: 0.8908 - val_loss: 0.2192 - val_accuracy: 0.9336 Época 3/10 300/300 - 1s - perda: 0.2768 - precisão: 0.9126 - val_loss: 0.1771 - val_accuracy: 0.9426 Época 4/10 300/300 - 1s - perda: 0.2392 - precisão: 0.9251 - val_loss: 0.1508 - val_accuracy: 0.9537 Época 5/10 300/300 - 1s - perda: 0.2164 - precisão: 0.9325 - val_loss: 0.1423 - val_accuracy: 0.9546 Época 6/10 300/300 - 1s - perda: 0.1997 - precisão: 0.9380 - val_loss: 0.1279 - val_accuracy: 0.9607 Época 7/10 300/300 - 1s - perda: 0.1856 - precisão: 0.9415 - val_loss: 0.1179 - val_accuracy: 0.9632 Época 8/10 300/300 - 1s - perda: 0.1777 - precisão: 0.9433 - val_loss: 0.1119 - val_accuracy: 0.9642 Época 9/10 300/300 - 1s - perda: 0.1689 - precisão: 0.9469 - val_loss: 0.1093 - val_accuracy: 0.9667 Época 10/10 300/300 - 1s - perda: 0.1605 - precisão: 0.9493 - val_loss: 0.1053 - val_accuracy: 0.9659 O erro é: 3.41%
Nos resultados do modelo, é visível conforme o número de épocas aumenta, melhora a precisão. O erro é 3.41%, menor erro maior precisão do modelo.
Espero que tenha gostado de ler e fique à vontade para usar meu código para testá-lo para seus propósitos. O que mais, se houver algum comentário sobre o código ou apenas a postagem do blog, sinta-se à vontade para me contatar em [e-mail protegido]
A mídia mostrada neste artigo de processamento de imagem da CNN não é propriedade da DataPeaker e é usada a critério do autor.