2017-01-17 4 views
1

Ich habe versucht, fcn auf meine Daten in Caffe zu laufen. Ich konnte meine Bildsätze in lmdb von convert_imageset eingebaute Funktion Caffe konvertieren. Allerdings, wenn ich die net trainieren wollte, gab es mir die folgende Fehlermeldung:Ist es möglich, die Anzahl der Bilder im Batch in convert_imageset.cpp zu reduzieren, um den Arbeitsspeicher der GPU zu reduzieren?

Check failed: error == cudaSuccess (2 vs. 0) out of memory 
*** Check failure stack trace: *** 
..... 
Aborted (core dumped) 

Ich ging durch viele Online-Ressourcen, um die Speicherfehler zu lösen, aber die meisten von ihnen darauf hindeutet, Chargengröße zu reduzieren. Sogar, ich habe die Größe der Bilder auf 256x256 reduziert. Ich konnte dieses Problem noch nicht angehen. Ich überprüft den Speicher der GPU mit diesem Befehl nvidia-smi, und das Modell ist Nvidia GT 730 und der Speicher ist 1998 MiB. Da die Losgröße in train_val.prototxt 1 ist, kann ich anythin in train_val.prototxt nicht tun. Also meine Fragen sind:

  1. von im Terminal an Protokolldatei suchen, erkannte ich, dass, wenn convert_imageset die Daten in LMDB Umwandlung, es 1000 Bild in einer Gruppe stattfindet. Ist es möglich, dass ich diese Nummer in Zeile 143 und 151 von convert_imageset.cpp zu einem kleineren (zum Beispiel 2; um zwei Bilder zu einer Zeit) zu ändern, caffe neu kompilieren, und konvertieren Sie dann Bilder in lmdb mithilfe von convert_imageset? Macht das Sinn?
  2. Wenn die Antwort auf Frage 1 ja ist, wie kann ich caffe wieder kompilieren, sollte ich build Ordner entfernen und wieder caffe Installation von scratch tun?
  3. Wie caffe die LMDB-Daten verarbeiten? Ist es so, als würde man einen Stapel dieser 1000 Bilder aufnehmen, die während der Ausführung von convert_imagenet angezeigt werden?

Ihre Hilfe wird sehr geschätzt. Dank ...

Antwort

0
  1. AFAIK, gibt es keinen Effekt für die Anzahl der Einträge bei jeder Transaktion LMDB verpflichtet (txn->Commit();) auf der CUDA aus dem Speicher.

  2. Wenn Sie caffe aus irgendeinem Grund erneut kompilieren möchten, führen Sie einfach make clean aus. Dadurch wird alles gelöscht und Sie können von Grund auf neu kompilieren.

  3. Wieder AFAIK, caffe Zugriff lmdb batch_size Bilder auf einmal unabhängig von der Größe der Transaktionsgröße beim Schreiben des Datasets verwendet.

Sind Sie sicher, dass Phasen für beide TRAIN und TEST 1 batch_size gesetzt?

+0

Vielen Dank für Ihre Informationen. Ja, es ist FCN semantische Segmentierung, die die Batch-Größe 1 ist. Gibt es eine Lösung für mein Problem? –

+0

@ S.EB kaufen Sie eine neue GPU mit größerem Speicher. : | – Shai

+0

danke für Ihre Hilfe –

Verwandte Themen