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.