Como você está trabalhando na classificação de imagens e também gostaria de implementar algum aumento de dados, você pode combinar os dois E carregar os lotes diretamente de uma pasta usando a poderosa classe 'ImageDataGenerator`.
Veja a excelente documentação!
Não copio e colo o exemplo desse link, mas posso descrever as etapas pelas quais você segue:
crie a classe do gerador: data_gen = ImageDataGenerator()
Se você deseja que ele execute aprimoramentos dinâmicos para você, isso pode ser especificado ao criar a classe: data_gen = ImageDataGenerator(samplewise_center=True, ...)
Se você usar processos de aumento que exigem algumas estatísticas sobre o conjunto de dados, por exemplo feature_wise normalização (não amostra-wise), você deve preparar o gerador, mostrando que alguns dos seus dados: data_gen.fit(training_data)
. Esse fit
método simplesmente pré-calcula coisas como a média e o desvio padrão, que são posteriormente usados para normalização.
o gerador entra no fit_generator
método do modelo e chamamos o flow_from_directory
método do gerador:
model.fit_generator(training_data=data_gen.flow_from_directory('/path/to/folder/'), ...)
Você também pode criar um gerador separado usando o ImageDataGenerator para seus dados de validação, onde não deve aplicar o aumento, para que os testes de validação sejam feitos com dados reais, fornecendo uma imagem precisa do desempenho do modelo.
De qualquer forma, esses geradores teoricamente serão executados para sempre, gerando lotes a partir da sua pasta. Portanto, recomendo usar uma função de retorno de chamada da Keras para parar quando um determinado critério for atendido. Consulte a documentação para a classe EarlyStopping . Você também pode fazer isso manualmente, mas o Keras torna muito simples!
Se você quiser um controle refinado, poderá fazer tudo isso manualmente, carregando amostras suficientes do disco para um único lote, realizando algum aumento e executando o model.train_on_batch()
método. Se você quiser entrar em detalhes, talvez seja melhor aprender primeiro o caminho Keras, depois progredir para seus próprios modelos detalhados, combinando o Tensorflow conforme necessário. Os dois podem ser usados muito melhor!