Pada laptop dell core i7 - 16GB RAM - 4gb 960m GPU, saya mengerjakan proyek untuk mengklasifikasikan gambar CT paru menggunakan CNN 3d. Saya menggunakan versi CPU tensorflow. Gambar disiapkan sebagai ukuran array numpy (25,50,50).
Model CNN saya memiliki 2 lapisan konv, dua lapisan maxpool, satu lapisan FC dan lapisan keluaran. Dengan arsitektur ini saya bisa melatih model dengan sekitar (5000 hingga 6000) sampel. Setelah menambahkan lebih banyak lapisan model saya sekarang memiliki 6 lapisan konv, 3 lapisan max-pool, FC dan lapisan keluaran. Masalah saya adalah setelah mengubah arsitektur dengan hanya lebih dari 1000 sampel memori saya terisi dan saya mendapatkan kesalahan memori. Saya mencoba membuat batch yang lebih kecil, tetapi setiap kali mendapatkan kesalahan yang sama. Saya punya dua pertanyaan:
Mengapa dengan menambahkan lebih banyak lapisan, model membutuhkan lebih banyak memori?
Apakah ada cara untuk mengatasi masalah seperti ini?
sumber
Jawaban:
Lebih banyak lapisan berarti lebih banyak parameter untuk jaringan Anda, yang pada gilirannya berarti lebih banyak ruang yang diperlukan dalam memori untuk menyimpan parameter tersebut.
Satu-satunya solusi (selain menambah memori komputer Anda) adalah mengurangi ukuran jaringan Anda. Beberapa petunjuk tentang ini: Pertama, CNN 3-D membutuhkan lebih banyak ruang daripada yang 2-D. Satu ide bisa bergeser ke yang 2-D. Selain itu, lapisan dengan parameter terbanyak adalah yang FC. Ini terkadang berlebihan. Saya sarankan mengurangi ukurannya terlebih dahulu.
sumber
Menambahkan ke titik yang dibuat oleh
MzdR
, Anda juga bisa mencoba menggunakan generator. Karena Anda model tidak akan benar-benar membutuhkan semua gambar Anda dalam memori saat pelatihan, saya pikir generator harus berfungsi dengan baik.Lihat pertanyaan ini dari stackoverflow. Generator cukup keren saat Anda sedang tawar-menawar memori. Tetapi jika ini juga gagal, coba kurangi ukuran lapisan FC Anda.
sumber