2017-09-01 2 views
0

Nehmen wir an, ich entwerfe ein Netzwerk (z. B. bei Inception) mit caffe.Netspec() wie folgt.Wenn Design-Netzwerke `caffe.NetSpec()` verwenden, wie kann man eine bestimmte Blob-Form erkennen?

import caffe 
from caffe import layers as L 

net   = caffe.NetSpec() 
net.data  = ... 
net.label = ... 
net["conv1"] = L.convolution(...) 
# ... concatenations ... and so on. 
net["here"] = ... 

Gibt es eine Möglichkeit, die blob Form irgendeines bestimmten Schicht zu kennen (zum Beispiel Schicht here) wie 7x7x128? Ich möchte es bis 1x1 Form machen, also muss ich wissen, welche Form so weit ist.

Antwort

0

caffe.NetSpec() wird verwendet, um ein Netz zu initialisieren, das bedeutet, dass Sie das Netz selbst definieren, einschließlich der Kernel-Größen und anderer Parameter wie Schritt, Padding. Diese Parameter können entsprechend der Größe der gewünschten Ausgabe für die jeweilige Ebene angepasst werden. Das Wissen um die Größe des Blobs tritt hier nicht auf, da Sie alles selbst definieren.

Wenn Sie ein vordefiniertes Netz mit caffe.Net() oder caffe.SGDSolver() laden, können Sie auf die Blobs mit net.blobs.items() zugreifen. Sie können so etwas wie dies versuchen: [(k, v.data.shape) für k, v in solver.net.blobs.items()]

zum CAFFE Netzstruktur zu gewöhnen, können Sie ein Blick auf folgendes Beispiel: https://github.com/BVLC/caffe/blob/master/examples/01-learning-lenet.ipynb

Dies beinhaltet, wie ein Netz definiert wird und wie ein Netz geladen wird.

Verwandte Themen