No meu laptop dell core i7 - 16 GB de RAM - 4 gb de 960 m de GPU, estou trabalhando em um projeto para classificar imagens de TC de pulmão usando a CNN 3d. Estou usando a versão CPU do tensorflow. As imagens são preparadas com um tamanho de matriz numpy (25,50,50).
Meu modelo CNN tinha 2 camadas conv, duas camadas maxpool, uma camada FC e uma camada de saída. Com essa arquitetura, eu pude treinar o modelo com aproximadamente (5000 a 6000) amostras. Depois de adicionar mais camadas, meu modelo agora tem 6 camadas conv, 3 camadas de pool máximo, FC e camada de saída. Meu problema é depois de alterar a arquitetura com pouco mais de 1000 amostras, minha memória fica cheia e eu recebo um erro de memória. Tentei fazer lotes menores, mas sempre obtendo o mesmo erro. Eu tenho duas perguntas:
Por que, adicionando mais camadas, o modelo precisa de mais memória?
Existe alguma maneira de lidar com esse tipo de problema?
fonte
Respostas:
Mais camadas significam mais parâmetros para sua rede, o que, por sua vez, significa mais espaço necessário na memória para armazenar esses parâmetros.
A única solução (além de aumentar a memória do seu computador) é reduzir o tamanho da sua rede. Algumas dicas sobre isso: primeiro, as CNNs 3D exigem muito mais espaço do que as 2D. Uma idéia poderia ser mudar para uma 2D. Fora isso, as camadas com mais parâmetros são as FC. Às vezes são redundantes. Eu sugiro reduzir o tamanho dos primeiros.
fonte
Além disso
MzdR
, você também pode tentar usar geradores. Como seu modelo não precisará realmente ter todas as suas imagens na memória durante o treinamento, acho que um gerador deve funcionar bem.Confira esta pergunta no stackoverflow. Os geradores são muito legais quando você está em uma pechincha de memória. Mas se isso também falhar, tente reduzir o tamanho das suas camadas de FC.
fonte