tensorflow es queda sense consells de memòria

Tensorflow Runs Out Memory Tips



Quan s’executa el programa, sovint apareixen a l’indicador:

Allocator (GPU_0_bfc) s’ha quedat sense memòria intentant assignar 2.26GiB amb freed_by_count = 0. La persona que truca indica que no es tracta d'un error, però pot significar que hi hauria guanys de rendiment si hi hagués més memòria disponible.



En primer lloc, feu una ullada a la configuració bàsica del servidor ubutun, feu clic al botó [Configuració del sistema] i obriu els [Detalls]; apareixerà la pantalla següent:





La qüestió és que la memòria total és de 30,9 GB, molt superior a 2,26 GB, (1 MB = 1024 KB, 1 GB = 1024 MB, segons la traducció de la nota de Wikipedia, GB (gigabyte) de capacitat en unitats decimals, 1 GB equival a 1.000.000.000 de bytes. La unitat binària de capacitat s'utilitza GiB (Gibibyte) és Giga Binary Byte, igual a 1.073.741.824Bytes. Per tant, un disc dur de 160 GB en realitat només 149.0116119GiB) per què informaria d'errors? Com que aquest problema era temps, normalment en un programa a gran escala s'executava amb un aprenentatge profund de la GPU, provocarà la manca de memòria GPU necessària, que és així com va passar? Primer mireu la memòria de l’ordinador, introduïu en un terminal nvidia-smi, consulteu la interfície següent:

Veure la memòria d'una GPU és 10989MiB (uns 10.7GiB), el problema de nou, la memòria també és un error del necessari 2.26GiB ah gran, com ho demanaria? Internet i busqueu principalment les següents solucions:



Solució: 1 reducció de mida per lots, una reducció de les necessitats d’assignació de memòria de la GPU

2. Si la memòria és relativament gran, podeu canviar la CPU

3. la mida de la imatge d’entrada restablerta, és a dir, per reduir el consum de memòria reduint la mida de la imatge

Seleccioneu qualsevol dels mètodes anteriors, el problema es pot resoldre, però tot i així voleu saber quin principi es trobava a gust .. i després mirar quan (per exemple, basat en la profunditat de l'aprenentatge) el temps d'execució, tensorflow a l'assignació de memòria del programa mètode:

https://blog.csdn.net/frankzd/article/details/102621817 (Consulteu el bloc, simplement podeu analitzar la petjada de memòria del seu propi codi) perquè el meu programa és una xarxa GAN de marc, abans CNN amb la mateixa configuració de fotogrames i els mètodes d'entrenament no serien rellevants GPU que la memòria ens demana, és perquè A la xarxa GAN també es va tractar un discriminador (aquest afegeix els pesos de la xarxa), de manera que donarà lloc a una memòria més gran que CNN? Si ho heu de saber a la secció de comentaris: amics d’ala

Alguns fragments relacionats, generalment al programa, tindran el codi següent:

Quan el paràmetre allow_soft_placement s'estableix en True, si l'operació no la pot realitzar la GPU, TensorFlow el posarà automàticament a la CPU. Es pot assignar memòria addicional durant la sessió. com segueix: