Tutorial de Redes Neurais Artificiais (RNA) com TensorFlow

โšก Resumo Inteligente

As Redes Neurais Artificiais aprendem enviando dados de entrada atravรฉs de camadas conectadas, avaliando o resultado com uma funรงรฃo de perda e corrigindo os pesos com um otimizador. Este tutorial constrรณi uma rede neural artificial no TensorFlow e classifica dรญgitos do MNIST.

  • ๐Ÿ”˜ Quatro objetos: Camadas, caracterรญsticas e rรณtulos, uma funรงรฃo de perda e um otimizador compรตem toda rede neural artificial.
  • โ˜‘๏ธ Funรงรตes da camada: A entrada alimenta as camadas ocultas, e o tamanho da camada de saรญda corresponde ร  quantidade de classes para tarefas de classificaรงรฃo.
  • โœ… Opรงรฃo de ativaรงรฃo: A ReLU retorna zero para valores negativos, permitindo que a rede aprenda padrรตes nรฃo lineares que um modelo linear nรฃo consegue identificar.
  • ๐Ÿงช Controles de sobreajuste: Redes menores, penalidades de peso L1 ou L2 e taxas de abandono entre 0.2 e 0.5 restauram a generalizaรงรฃo.
  • ๐Ÿ› ๏ธ Seis etapas de construรงรฃo: Importe o MNIST, dimensione-o, crie colunas de recursos, defina o DNNClassifier, treine e, em seguida, adicione a regularizaรงรฃo.
  • ๐Ÿ“ˆ Resultado medido: Camadas ocultas de 300 e 100 unidades atingem uma precisรฃo de 0.9637143; a variante regularizada cai para 0.95057142.

Rede Neural Artificial (ANN)

O que รฉ Rede Neural Artificial?

An Rede Neural Artificial (ANN) ร‰ um sistema computacional inspirado em redes neurais biolรณgicas para criar cรฉrebros artificiais baseados em um conjunto de unidades interconectadas chamadas neurรดnios artificiais. Ele รฉ projetado para analisar e processar informaรงรตes da mesma forma que os humanos. Uma Rede Neural Artificial possui capacidade de autoaprendizagem para produzir melhores resultados ร  medida que mais dados sรฃo disponibilizados.

O diagrama abaixo tracรฉ uma passagem completa por essa rede, desde a entrada bruta atรฉ o otimizador que corrige os pesos.

Fluxograma de uma rede neural artificial mostrando a entrada, duas camadas ponderadas, a prediรงรฃo, a funรงรฃo de perda e o otimizador.

Uma Rede Neural Artificial (RNA) รฉ composta por quatro objetos principais:

  • Camadas: Todo o aprendizado ocorre nas camadas. Existem 3 camadas: 1) Entrada, 2) Oculta e 3) Saรญda.
  • Caracterรญstica e rรณtulo: Dados de entrada para a rede (caracterรญsticas) e saรญda da rede (rรณtulos)
  • Funรงรฃo de perda: Mรฉtrica utilizada para estimar o desempenho da fase de aprendizagem.
  • Otimizador: Melhore o aprendizado atualizando o conhecimento na rede.

Uma rede neural recebe os dados de entrada e os processa em um conjunto de camadas. Em seguida, a rede avalia seu desempenho com uma funรงรฃo de perda. Essa funรงรฃo fornece ร  rede uma ideia do caminho que ela precisa percorrer para dominar o conhecimento. A rede aprimora esse conhecimento com a ajuda de um otimizador.

Se vocรช der uma olhada na figura acima, entenderรก o mecanismo subjacente.

O programa recebe alguns valores de entrada e os envia para duas camadas totalmente conectadas. Imagine que vocรช tem um problema de matemรกtica. A primeira coisa que vocรช faz รฉ ler o capรญtulo correspondente para resolvรช-lo. Em seguida, vocรช aplica seu novo conhecimento ao problema. Hรก uma grande chance de vocรช nรฃo obter uma boa pontuaรงรฃo. O mesmo acontece com uma rede neural: na primeira vez que ela analisa os dados e faz uma previsรฃo, o resultado nรฃo corresponderรก perfeitamente aos dados reais.

Para aprimorar seu conhecimento, a rede utiliza um otimizador. Nessa analogia, um otimizador pode ser comparado a reler o capรญtulo. Vocรช adquire novas ideias ao reler. De forma semelhante, a rede utiliza o otimizador, atualiza seu conhecimento e testa esse novo conhecimento para verificar o quanto ainda precisa aprender. O programa repete esse processo atรฉ cometer o menor erro possรญvel.

Na analogia com problemas de matemรกtica, isso significa que vocรช lรช o capรญtulo do livro didรกtico vรกrias vezes atรฉ compreender completamente o conteรบdo do curso. Mesmo apรณs mรบltiplas leituras, se vocรช continuar cometendo erros, significa que atingiu o limite do conhecimento adquirido com o material atual. Vocรช precisa usar um livro didรกtico diferente ou testar um mรฉtodo diferente para melhorar seu desempenho. Para uma rede neural, o processo รฉ o mesmo. Se o erro parar de diminuir e a curva de perda se estabilizar, a arquitetura atual nรฃo consegue aprender mais nada. A rede precisa ser melhor otimizada para expandir seu aprendizado.

Esses quatro objetos correspondem diretamente aos componentes que vocรช configura ao projetar uma rede.

Rede neural Archiarquitetura

A arquitetura da Rede Neural Artificial consiste nos seguintes componentes:

  • Camadas
  • Funรงรฃo de ativaรงรฃo
  • Funรงรฃo de perda
  • Optimizer

Camadas

Uma camada รฉ onde todo o aprendizado acontece. Dentro de uma camada, existe um nรบmero arbitrรกrio de neurรดnios, cada um com seus prรณprios pesos. Uma rede neural tรญpica รฉ frequentemente processada por camadas densamente conectadas (tambรฉm chamadas de camadas totalmente conectadas). Isso significa que todas as entradas estรฃo conectadas ร  saรญda.

Uma rede neural tรญpica recebe um vetor de entrada e um escalar que contรฉm os rรณtulos. A configuraรงรฃo mais simples รฉ uma classificaรงรฃo binรกria com apenas duas classes: 0 e 1.

A rede recebe uma entrada, envia-a para todos os nรณs conectados e calcula o sinal com uma funรงรฃo de ativaรงรฃo. O diagrama numerado abaixo amplia um รบnico nรณ para que vocรช possa ver a soma ponderada e a etapa de ativaรงรฃo separadamente.

Diagrama de rede de duas camadas com pesos w11 a w22 e um destaque mostrando a soma ponderada e a funรงรฃo de ativaรงรฃo dentro de um nรณ.

A figura acima ilustra essa ideia. A primeira camada contรฉm os valores de entrada. A segunda camada, chamada camada oculta, recebe a entrada ponderada da camada anterior.

  1. O primeiro nรณ representa os valores de entrada.
  2. O neurรดnio รฉ decomposto em uma parte de entrada e uma funรงรฃo de ativaรงรฃo. A parte esquerda recebe toda a entrada da camada anterior. A parte direita รฉ a soma da entrada passada para a funรงรฃo de ativaรงรฃo.
  3. O valor de saรญda รฉ calculado a partir das camadas ocultas e usado para fazer uma previsรฃo. Para classificaรงรฃo, รฉ igual ao nรบmero de classes. Para regressรฃo, apenas um valor รฉ previsto.

Funรงรฃo de ativaรงรฃo

A funรงรฃo de ativaรงรฃo de um nรณ define a saรญda para um conjunto de entradas. ร‰ necessรกria uma funรงรฃo de ativaรงรฃo para permitir que a rede aprenda padrรตes nรฃo lineares. Uma funรงรฃo de ativaรงรฃo comum รฉ a ReLU, Unidade Linear Retificada. Essa funรงรฃo retorna zero para todos os valores negativos.

As outras funรงรตes de ativaรงรฃo sรฃo:

  • Linear por partes
  • Sigmรณide
  • Tanh
  • ReLU com vazamento

O grรกfico abaixo mostra por que a ReLU รฉ descrita dessa forma: a curva รฉ plana em zero para toda entrada negativa e sobe linearmente a partir daรญ.

Grรกfico da funรงรฃo de ativaรงรฃo ReLU R(z) = max(0, z), plana em zero para entradas negativas e linear para entradas positivas.

A decisรฃo crรญtica a tomar ao construir uma rede neural รฉ:

  • Quantas camadas na rede neural
  • Quantas unidades ocultas para cada camada

Redes neurais com muitas camadas e unidades ocultas podem aprender uma representaรงรฃo complexa dos dados, mas tornam o processamento computacional da rede muito custoso.

Funรงรฃo de perda

Depois de definir as camadas ocultas e a funรงรฃo de ativaรงรฃo, vocรช precisa especificar a funรงรฃo de perda e o otimizador.

Para classificaรงรฃo binรกria, รฉ prรกtica comum usar uma funรงรฃo de perda de entropia cruzada binรกria. regressรฃo linear, vocรช usa o erro quadrรกtico mรฉdio.

A funรงรฃo de perda รฉ uma mรฉtrica importante para estimar o desempenho do otimizador. Durante o treinamento, essa mรฉtrica serรก minimizada. Vocรช precisa selecionar essa quantidade com cuidado, dependendo do tipo de problema com o qual estรก lidando.

Optimizer

A funรงรฃo de perda รฉ uma medida do desempenho do modelo. O otimizador ajudarรก a melhorar os pesos da rede para diminuir a perda. Existem diferentes otimizadores disponรญveis, mas o mais comum รฉ o Gradiente Descendente Estocรกstico.

Os otimizadores convencionais sรฃo:

  • Momentum otimizaรงรฃo
  • Gradiente Acelerado de Nesterov
  • AdaGrad
  • Otimizaรงรฃo de Adam

ArchiA arquitetura por si sรณ nรฃo garante um modelo utilizรกvel.

Limitaรงรตes da rede neural

A seguir, apresentamos as limitaรงรตes de uma rede neural:

Overfitting

Um problema comum em redes neurais complexas รฉ a dificuldade de generalizar para dados nunca vistos antes. Uma rede neural com muitos pesos pode identificar detalhes especรญficos no conjunto de treinamento muito bem, mas isso frequentemente leva ao sobreajuste (overfitting). Se os dados estiverem desbalanceados dentro dos grupos (ou seja, se nรฃo houver dados suficientes disponรญveis em alguns grupos), a rede aprenderรก muito bem durante o treinamento, mas nรฃo terรก a capacidade de generalizar esses padrรตes para dados nunca vistos antes.

Existe uma compensaรงรฃo em aprendizado de mรกquina entre otimizaรงรฃo e generalizaรงรฃo.

  • Otimizar um modelo requer encontrar os melhores parรขmetros que minimizem a perda no conjunto de treinamento.
  • A generalizaรงรฃo, entretanto, diz como o modelo se comporta para dados nรฃo vistos.

Para evitar que o modelo capture detalhes especรญficos ou padrรตes indesejados dos dados de treinamento, vocรช pode usar diferentes tรฉcnicas. O melhor mรฉtodo รฉ ter um conjunto de dados balanceado com quantidade suficiente de dados. A arte de reduzir o sobreajuste รฉ chamada de regularizaรงรฃo. As trรชs tรฉcnicas abaixo sรฃo os pontos de partida convencionais.

Tรฉcnica O que isso restringe Configuraรงรฃo tรญpica neste tutorial
Tamanho da rede O nรบmero de camadas e unidades ocultas Duas camadas ocultas, 300 e 100 unidades
Regularizaรงรฃo de peso L1/L2 A magnitude dos coeficientes de ponderaรงรฃo forรงa_regularizaรงรฃo_l1 e forรงa_regularizaรงรฃo_l2 de 0.01
Cair fora A proporรงรฃo de unidades desligadas por etapa de treinamento abandono de 0.3

Tamanho da rede

Sabe-se que uma rede neural com muitas camadas e unidades ocultas รฉ altamente sofisticada. Uma maneira simples de reduzir a complexidade do modelo รฉ diminuir seu tamanho. Nรฃo existe uma รบnica prรกtica ideal para definir o nรบmero de camadas. ร‰ preciso comeรงar com um nรบmero pequeno de camadas e aumentar o tamanho gradualmente atรฉ que o modelo comece a apresentar sobreajuste (overfitting).

Regularizaรงรฃo de Peso

Uma tรฉcnica padrรฃo para evitar o sobreajuste รฉ adicionar restriรงรตes aos pesos da rede. A restriรงรฃo forรงa os pesos da rede a assumirem apenas valores pequenos. Essa restriรงรฃo รฉ adicionada ร  funรงรฃo de perda do erro. Existem dois tipos de regularizaรงรฃo:

  • L1 (Laรงo): O custo รฉ proporcional ao valor absoluto dos coeficientes de ponderaรงรฃo.
  • L2 (Crista): O custo รฉ proporcional ao quadrado do valor dos coeficientes de ponderaรงรฃo.

Cair fora

O dropout รฉ uma tรฉcnica peculiar, porรฉm รบtil. Uma rede neural com dropout significa que algumas unidades serรฃo desativadas aleatoriamente durante uma etapa de treinamento, de modo que seu sinal de saรญda se torne zero. Imagine que vocรช tenha um array de pesos [0.1, 1.7, 0.7, -0.9]. Se a rede neural tiver dropout, ela se tornarรก [0.1, 0, 0, -0.9], com zeros distribuรญdos aleatoriamente. O parรขmetro que controla o dropout รฉ a taxa de dropout. Essa taxa define quantas unidades sรฃo desativadas. Uma taxa entre 0.2 e 0.5 รฉ comum.

Um pequeno exemplo interativo facilita o acompanhamento do ciclo de treinamento.

Exemplo de rede neural no TensorFlow

Aqui estรก um exemplo de Rede Neural Artificial em aรงรฃo, mostrando como uma rede neural funciona em um problema tรญpico de classificaรงรฃo. Existem duas entradas, x1 e x2, cada uma com um valor aleatรณrio. A saรญda รฉ uma classe binรกria. O objetivo รฉ classificar o rรณtulo com base nas duas caracterรญsticas. Para realizar essa tarefa, a arquitetura da rede neural รฉ definida da seguinte forma:

  • Duas camadas ocultas
  • A primeira camada tem quatro neurรดnios totalmente conectados
  • A segunda camada tem dois neurรดnios totalmente conectados
  • A funรงรฃo de ativaรงรฃo รฉ uma ReLU.
  • Adicione uma regularizaรงรฃo L2 com uma taxa de aprendizagem de 0.003

A rede otimizarรก os pesos durante 180 รฉpocas com um tamanho de lote de 10. Na animaรงรฃo de exemplo de RNA abaixo, vocรช pode ver como os pesos evoluem ao longo do tempo e como a rede melhora o mapa de classificaรงรฃo.ping.

Animaรงรฃo de uma rede neural baseada em navegador ร  medida que seus pesos mudam ao longo das รฉpocas de treinamento.

Em primeiro lugar, a rede atribui valores aleatรณrios a todos os pesos.

  • Com os pesos aleatรณrios, ou seja, sem otimizaรงรฃo, a perda de saรญda รฉ de 0.453. A imagem abaixo representa a rede com cores diferentes.
  • Em geral, a cor laranja representa valores negativos enquanto as cores azuis mostram os valores positivos.
  • Os pontos de dados tรชm a mesma representaรงรฃo: os azuis sรฃo os rรณtulos positivos e os laranjas, os rรณtulos negativos.

Ambiente de testes do navegador na primeira iteraรงรฃo com pesos aleatรณrios, um peso de -0.43 e uma perda de teste de 0.453.

Na segunda camada oculta, as linhas sรฃo coloridas de acordo com o sinal dos pesos. As linhas laranjas representam pesos negativos e as azuis, pesos positivos.

Como vocรช pode ver, no mapa de saรญdapingA rede estรก cometendo muitos erros. Agora, observe como a rede se comporta apรณs a otimizaรงรฃo.

A imagem do exemplo de RNA abaixo mostra os resultados da rede otimizada. Primeiramente, nota-se que a rede aprendeu com sucesso a classificar os pontos de dados. Comparando com a imagem anterior, o peso inicial era -0.43, enquanto apรณs a otimizaรงรฃo resultou em um peso de -0.95.

Quatro painรฉis de playground mostrando os pesos finais, com linhas azuis para pesos positivos e os pontos de dados classificados corretamente.

A ideia pode ser generalizada para redes com mais camadas ocultas e neurรดnios. Vocรช pode experimentar as configuraรงรตes por conta prรณpria no Parque TensorFlow.

O passo a passo abaixo demonstra como implementar a mesma ideia em cรณdigo, utilizando um conjunto de dados reais.

Como treinar uma rede neural com TensorFlow

Aqui estรก o processo passo a passo de como treinar uma rede neural com TensorFlow Rede neural artificial (RNA) usando o estimador DNNClassifier da API.

Usaremos o conjunto de dados MNIST para treinar sua primeira rede neural. Treinando uma rede neural com TensorFlow Nรฃo รฉ muito complicado. A etapa de prรฉ-processamento รฉ exatamente igual ร  dos tutoriais anteriores. Vocรช deverรก proceder da seguinte forma:

  1. Importar os dados
  2. Transforme os dados
  3. Construa o tensor
  4. Construa o modelo
  5. Treine e avalie o modelo
  6. Melhorar o modelo

Nota de versรฃo: O cรณdigo neste passo a passo รฉ direcionado ร  API Estimator do TensorFlow 1.x. A versรฃo final do pacote tf-estimator foi lanรงada com o TensorFlow 2.15, e o tf.estimator foi removido no TensorFlow 2.16. Para executar estas etapas em uma versรฃo atual, fixe o TensorFlow 2.15 ou reconstrua a mesma rede de duas camadas com tf.keras.layers.Dense e model.fit().

Etapa 1) Importe os dados

Primeiramente, vocรช precisa importar a biblioteca necessรกria. Vocรช pode importar o conjunto de dados MNIST usando scikit-learn como mostrado no exemplo de Rede Neural do TensorFlow abaixo.

O conjunto de dados MNIST รฉ o mais comumente usado para testar novas tรฉcnicas ou algoritmos. Trata-se de uma coleรงรฃo de imagens de 28ร—28 pixels, cada uma mostrando um dรญgito manuscrito de 0 a 9. Um comitรช de redes convolucionais profundas treinadas com distorรงรตes elรกsticas reduziu o erro de teste para 0.27%.

import numpy as np
import tensorflow as tf
np.random.seed(1337)

O passo a passo original baixava os arquivos MNIST manualmente e apontava o fetch_mldata para essa pasta.

from sklearn.datasets import fetch_mldata
mnist = fetch_mldata(' /Users/Thomas/Dropbox/Learning/Upwork/tuto_TF/data/mldata/MNIST original')
print(mnist.data.shape)
print(mnist.target.shape)

Nota sobre a API: O site mldata.org nรฃo estรก mais online e a funรงรฃo fetch_mldata foi removida no scikit-learn 0.22. Em uma instalaรงรฃo atual, substitua a chamada acima por fetch_openml('mnist_784', version=1), que baixa os mesmos 70,000 dรญgitos e expรตe os mesmos dados e atributos de destino.

Depois disso, vocรช divide os dados e obtรฉm o formato de ambos os conjuntos de dados.

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(mnist.data, mnist.target, test_size=0.2, random_state=42)
y_train  = y_train.astype(int)
y_test  = y_test.astype(int)
batch_size =len(X_train)

print(X_train.shape, y_train.shape,y_test.shape )

Etapa 2) Transforme os dados

No tutorial anterior, vocรช aprendeu que precisa transformar os dados para limitar o efeito de outliers. Neste tutorial de Redes Neurais, vocรช transformarรก os dados usando o escalar min-max. A fรณrmula รฉ:

(X-min_x)/(max_x - min_x)

O scikit-learn jรก possui uma funรงรฃo para isso: MinMaxScaler()

## resclae
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
# Train
X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))
# test
X_test_scaled = scaler.fit_transform(X_test.astype(np.float64))

Etapa 3) Construa o tensor

Agora vocรช jรก estรก familiarizado com a forma de criar. tensores No TensorFlow, vocรช pode converter o conjunto de treinamento em uma coluna numรฉrica.

feature_columns = [tf.feature_column.numeric_column('x', shape=X_train_scaled.shape[1:])]

Etapa 4) Construa o modelo

A arquitetura da rede neural contรฉm duas camadas ocultas, com 300 unidades na primeira camada e 100 unidades na segunda. Esses valores sรฃo obtidos por experiรชncia, e nรฃo por uma fรณrmula. Vocรช pode ajustรก-los e observar como isso afeta a precisรฃo da rede.

Para construir o modelo, vocรช usa o estimador DNNClassifier. Vocรช precisa definir o nรบmero de classes para 10, pois existem dez classes no conjunto de treinamento. Vocรช jรก estรก familiarizado com a sintaxe do objeto estimador. Os argumentos feature_columns, n_classes e model_dir sรฃo exatamente os mesmos do tutorial anterior. O argumento hidden_units รฉ novo: ele controla tanto o nรบmero de camadas quanto a quantidade de nรณs que cada camada conecta ร  rede neural. No cรณdigo abaixo, existem duas camadas ocultas, a primeira conectando 300 nรณs e a segunda 100 nรณs.

Para construir o estimador, use tf.estimator.DNNClassifier com os seguintes parรขmetros:

  • colunas_de_recursos: Defina as colunas a serem usadas na rede.
  • unidades_ocultas: Defina o nรบmero de neurรดnios ocultos.
  • n_classes: Defina o nรบmero de classes a serem previstas.
  • diretรณrio_do_modelo: Defina o caminho de TensorBoard
estimator = tf.estimator.DNNClassifier(
    feature_columns=feature_columns,
    hidden_units=[300, 100], 
    n_classes=10, 
    model_dir = '/train/DNN')

Etapa 5) Treine e avalie o modelo

Vocรช pode usar a funรงรฃo de entrada do NumPy para treinar o modelo e avaliรก-lo.

# Train the estimator
train_input = tf.estimator.inputs.numpy_input_fn(
    x={"x": X_train_scaled},
    y=y_train,
    batch_size=50,
    shuffle=False,
    num_epochs=None)
estimator.train(input_fn = train_input,steps=1000) 
eval_input = tf.estimator.inputs.numpy_input_fn(
    x={"x": X_test_scaled},
    y=y_test, 
    shuffle=False,
    batch_size=X_test_scaled.shape[0],
    num_epochs=1)
estimator.evaluate(eval_input,steps=None) 

Saรญda:

{'accuracy': 0.9637143,
 'average_loss': 0.12014342,
 'loss': 1682.0079,
 'global_step': 1000}

A arquitetura atual resulta em uma precisรฃo de aproximadamente 96% no conjunto de avaliaรงรฃo.

Etapa 6) Melhorar o modelo

Vocรช pode tentar melhorar o modelo adicionando parรขmetros de regularizaรงรฃo.

Aqui, o estimador usa um otimizador Proximal AdaGrad com uma taxa de dropout de 0.3 e as intensidades L1 e L2 definidas como 0.01. Em uma rede neural do TensorFlow, vocรช acessa o otimizador por meio do objeto `train` seguido pelo nome do otimizador. O TensorFlow fornece uma API integrada para o otimizador Proximal AdaGrad.

Para adicionar regularizaรงรฃo ร  rede neural profunda, vocรช pode usar o tf.train.ProximalAdagradOptimizer com os seguintes parรขmetros:

  • Taxa de aprendizagem: taxa de Aprendizagem
  • Regularizaรงรฃo L1: forรงa_de_regularizaรงรฃo_l1
  • Regularizaรงรฃo L2: forรงa_de_regularizaรงรฃo_l2
estimator_imp = tf.estimator.DNNClassifier(
    feature_columns=feature_columns,
    hidden_units=[300, 100],
    dropout=0.3, 
    n_classes = 10,
    optimizer=tf.train.ProximalAdagradOptimizer(
      learning_rate=0.01,
      l1_regularization_strength=0.01, 
      l2_regularization_strength=0.01
    ),
    model_dir = '/train/DNN1')
estimator_imp.train(input_fn = train_input,steps=1000) 
estimator_imp.evaluate(eval_input,steps=None) 

Saรญda:

{'accuracy': 0.95057142,
 'average_loss': 0.17318928,
 'loss': 2424.6499,
 'global_step': 2000}

Os valores escolhidos para reduzir o sobreajuste nรฃo melhoraram a precisรฃo do modelo. Seu primeiro modelo teve uma precisรฃo de 96%, enquanto o modelo com o regularizador L2 tem uma precisรฃo de 95%. Vocรช pode experimentar valores diferentes e ver como eles impactam a precisรฃo.

Perguntas Frequentes

Nรฃo existe uma fรณrmula. Regras prรกticas comuns mantรชm o nรบmero de neurรดnios ocultos entre os tamanhos da camada de entrada e da camada de saรญda, ou prรณximo a dois terรงos da camada de entrada mais a camada de saรญda. A maioria dos problemas tabulares precisa de uma ou duas camadas ocultas; comece com um nรบmero pequeno e aumente gradualmente atรฉ que o modelo entre em overfitting.

Nรฃo estรก como estรก escrito. O tf.estimator foi removido no TensorFlow 2.16 e o โ€‹โ€‹tf.estimator.inputs.numpy_input_fn nรฃo existe mais. Ou fixe o TensorFlow na versรฃo 2.15, ou reconstrua a rede com camadas tf.keras.layers.Dense de 300 e 100 unidades e treine-a usando model.fit().

Bibliotecas de busca e ajuste automรกtico de arquitetura neural verificam em paralelo a quantidade de camadas, larguras, taxas de aprendizado e dropout, classificando os candidatos por pontuaรงรฃo de validaรงรฃo. Elas substituem a tentativa e erro manual por comparaรงรตes mensuradas, embora um engenheiro ainda defina o orรงamento computacional e a mรฉtrica alvo.

Sim. Travas deslizantes portรกteis Copiloto do GitHub O recurso completa automaticamente trechos de cรณdigo padrรฃo, como pipelines de entrada, pilhas de camadas e loops de avaliaรงรฃo, a partir de um breve comentรกrio. Considere a saรญda como um rascunho: ele pode sugerir APIs removidas, como `fetch_mldata`, portanto, verifique cada chamada com a documentaรงรฃo atual antes de executar.

O site mldata.org foi desativado e scikit-learn A funรงรฃo `fetch_mldata` foi removida na versรฃo 0.22. Em vez disso, use `fetch_openml('mnist_784', version=1)`. Ela baixa os mesmos 70,000 dรญgitos manuscritos e retorna os dados e os atributos de destino, portanto, o restante deste guia permanece inalterado.

Uma RNA conecta cada unidade em uma camada a cada unidade na camada seguinte, o que รฉ adequado para dados tabulares. rede convolucional Compartilha pequenos filtros em uma imagem, enquanto um rede recorrente Transporta o estado ao longo de uma sequรชncia.

O modelo base nรฃo apresentava sobreajuste significativo, portanto, o dropout de 0.3, juntamente com penalidades L1 e L2 de 0.01, removeu a maior parte da capacidade รบtil. A acurรกcia caiu de 0.9637143 para 0.95057142. A regularizaรงรฃo sรณ รฉ รบtil quando a diferenรงa entre as pontuaรงรตes de treino e teste รฉ grande.

Os usos comuns em produรงรฃo incluem reconhecimento de imagem e fala, compreensรฃo de linguagem natural, previsรฃo de demanda, avaliaรงรฃo de crรฉdito, detecรงรฃo de fraudes e classificaรงรฃo de recomendaรงรตes. Sua principal vantagem รฉ a capacidade de aprender relaรงรตes nรฃo lineares diretamente a partir de dados brutos; sua desvantagem รฉ a explicabilidade limitada em comparaรงรฃo com modelos lineares ou baseados em รกrvores.

Resuma esta postagem com: