Criação de modelo de aprendizado profundo

Nosso modelo de rede neural consistirá em uma pilha linear de camadas. Para definir esse modelo, chamamos oSequential função -

model = Sequential()

Camada de entrada

Definimos a camada de entrada, que é a primeira camada em nossa rede usando a seguinte instrução do programa -

model.add(Dense(512, input_shape=(784,)))

Isso cria uma camada com 512 nós (neurônios) com 784 nós de entrada. Isso é ilustrado na figura abaixo -

Observe que todos os nós de entrada estão totalmente conectados à Camada 1, ou seja, cada nó de entrada está conectado a todos os 512 nós da Camada 1.

Em seguida, precisamos adicionar a função de ativação para a saída da Camada 1. Usaremos ReLU como nossa ativação. A função de ativação é adicionada usando a seguinte declaração do programa -

model.add(Activation('relu'))

A seguir, adicionamos Abandono de 20% usando a declaração abaixo. O dropout é uma técnica usada para evitar que o modelo seja superdimensionado.

model.add(Dropout(0.2))

Neste ponto, nossa camada de entrada está totalmente definida. Em seguida, vamos adicionar uma camada oculta.

Camada Oculta

Nossa camada oculta consistirá em 512 nós. A entrada para a camada oculta vem de nossa camada de entrada definida anteriormente. Todos os nós estão totalmente conectados como no caso anterior. A saída da camada oculta irá para a próxima camada na rede, que será nossa camada final e de saída. Usaremos a mesma ativação ReLU da camada anterior e um abandono de 20%. O código para adicionar esta camada é fornecido aqui -

model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.2))

A rede nesta fase pode ser visualizada da seguinte forma -

A seguir, adicionaremos a camada final à nossa rede, que é a camada de saída. Observe que você pode adicionar qualquer número de camadas ocultas usando o código semelhante ao que você usou aqui. Adicionar mais camadas tornaria a rede complexa para treinamento; no entanto, dando uma vantagem definitiva de melhores resultados em muitos casos, embora não em todos.

Camada de Saída

A camada de saída consiste em apenas 10 nós, pois queremos classificar as imagens fornecidas em 10 dígitos distintos. Adicionamos essa camada, usando a seguinte declaração -

model.add(Dense(10))

Como queremos classificar a saída em 10 unidades distintas, usamos a ativação softmax. No caso de ReLU, a saída é binária. Adicionamos a ativação usando a seguinte declaração -

model.add(Activation('softmax'))

Neste ponto, nossa rede pode ser visualizada conforme mostrado no diagrama abaixo -

Neste ponto, nosso modelo de rede está totalmente definido no software. Execute a célula de código e se não houver erros, você receberá uma mensagem de confirmação na tela, conforme mostrado na imagem abaixo -

Em seguida, precisamos compilar o modelo.