Ich sah mehr in die Details dieses Problem und sieht so aus, als würde ich es speichern und es korrekt laden. Das Problem ist, dass nach dem Laden des Modells net.blobs keinen Wert haben wird. Aber wenn Sie das geladene Modell mit einem Testbeispiel verwenden, funktioniert es (wie erwartet). Ich füge ein Beispiel-Code, inspiriert von https://github.com/Russell91/apollocaffe/blob/master/examples/apollocaffe/simple.py hier der gut arbeitet:
import apollocaffe
from apollocaffe.layers import NumpyData, Convolution, EuclideanLoss
import numpy as np
def save():
net = apollocaffe.ApolloNet()
for i in range(1000):
example = np.array(np.random.random()).reshape((1, 1, 1, 1))
net.clear_forward()
net.f(NumpyData('data', example))
net.f(NumpyData('label', example*3))
net.f(Convolution('conv', (1,1), 1, bottoms=['data']))
net.f(EuclideanLoss('loss', bottoms=['conv', 'label']))
net.backward()
net.update(lr=0.1)
if i % 100 == 0:
print net.loss
net.save("model.h5")
def load():
print "LOAD"
net = apollocaffe.ApolloNet()
net.load("model.h5")
#example = np.array(np.random.random()).reshape((1, 1, 1, 1))
example = np.asarray([[[[ 0.92890837]]]])
net.clear_forward()
net.f(NumpyData('data', example))
net.f(NumpyData('label', example*3))
net.f(Convolution('conv', (1,1), 1, bottoms=['data']))
net.f(EuclideanLoss('loss', bottoms=['conv', 'label']))
net.backward()
net.update(lr=0.1)
print net.loss
save()
load()
haben Sie eine Protokollausgabe für 'net.load (model_name)'? Wie definierst du die Netzstruktur zu deinem Modell? ist es möglich, dass Sie 'net.load' aufrufen müssen, nachdem Sie das Netz erstellt haben (entweder durch Laden eines' prototxt' oder durch Verwendung von 'net.f')? – Shai
Danke für die Antwort. Ich verwende simple.py von http://apollocaffe.com/#Tutorial. Ich verwende am Ende net.save ("model.caffemodel"), um das Modell zu speichern. Und zum Laden versucht sowohl net = apollocaffe.Apollonet ("model.caffemodel") und net.load ("model.caffemodel"). Aber in beiden Fällen gibt mir net.loss 0,0. Ich verstehe, dass ich etwas über die Architektur des Netzes laden muss. Aber ich bin mir nicht sicher, was genau geladen werden muss. Ich habe wenige Dinge ausprobiert, aber nichts funktioniert. Es wäre großartig, wenn Sie Ihre Gedanken dazu teilen könnten. – Shweta
Ich kenne den Workflow "apollocaffe" nicht. In regulärem caffe haben Sie zwei Dateien, die Ihr Modell beschreiben: 'model.caffemodel' - eine binäre Datei, die die numerischen Werte der trainierten Gewichte speichert * und *' deploy.prototxt' eine Textdatei, die die Netzarchitektur beschreibt: welche Schichten sind verwendet und wie diese Ebenen miteinander verbunden sind. Es scheint, als ob Ihnen der zweite Teil fehlt: die Netzstrukturinformationen. Überprüfen Sie, ob Sie diese Struktur mit Apollocaffe-Schnittstelle speichern/laden können. – Shai