Inteligencia Artificial

Como salvar um model treinado com Keras

Vimos como fazer uma ANN nesse artigo, depois vimos como fazer uma CNN nesse outro. É incrível e, apesar dos conceitos necessários, não é uma coisa de outro mundo utilizar um conjunto de dados para treinar uma rede neural. O chato é ter que fazer o treinamento toda a vez que for executar o programa, tendo que deixar o programa rodando para sempre para não perder o treinamento, certo? Errado!

Após fazer o treinamento de um dataset, a estrutura necessária já existirá na memória enquanto o programa estiver rodando, então podemos salvar esse treinamento e carregá-lo sempre que for necessário utilizá-lo novamente, dispensando um novo treinamento! Vamos ver como?

Faça o download de um dataset

Para esse exemplo, vamos utilizar a base de dados Pima Indians Diabetes, para fazer predição do risco de diabetes baseado em fatores como gravidez, BMI, nível de insulina, idade etc.

Eu peguei o dataset nesse repositório do Github.

Treinamento de um dataset

O procedimento é o mesmo que utilizamos para fazer a classificação de vinho. A primeira parte portanto fica desse jeito:

O treinamento foi feito em alguns poucos segundos na GPU (gtx1050), é um dataset modesto. A acurácia aqui deu 80.47%, me pareceu bastante bom.

Salvar um model de rede neural em JSON

Com Keras é possível descrever qualquer model usando o formato JSON, chamando a função .to_json(). Pode-se salvá-lo em um arquivo e posteriormente carregá-lo vi model_from_json().

Os pesos são salvos diretamente do modelo usando save_weights() e depois pode ser carregado usando load_weights().

Como mostrado nos artigos anteriores, o exemplo acima faz o treino e predição de um dataset. Agora vamos incrementar um pouco, salvando nosso model e pesos, então carregá-lo do computador. Esse processo deve ser feito sempre depois de model.fit(), quando a classificação já foi preparada.

Depois para carregar:

Ou seja, se quisermos carregar o model salvo invés de fazer novamente um treinamento, o programa completo seria:

Essa imagem abaixo mostra a carga e execução do peso.

salvar um model treinado

Eu não sei a razão, mas carregando os pesos apenas deu uma diferença na acurácia, ficando em 77,08%. Tem a possibilidade de salvar o model inteiro, complementarei em outro artigo. Agora vou escrever mais um artigo que tenho em mente e acredito que seja do interesse de muitos.

Se gostou, curta a página Do bit Ao Byte no facebook, clicando alí em cima na coluna da direita. Siga-nos também no Youtube, no canal DobitAoByteBrasil, se inscreva e clique no sininho para receber notificações.

Até a próxima!