Ich speicherte das Modell wie auf loading and saving dokumentiert.Wie kann man ein trainiertes Modell in theano speichern/serialisieren?
# saving trained model
f = file('models/simple_model.save', 'wb')
cPickle.dump(ca, f, protocol=cPickle.HIGHEST_PROTOCOL)
f.close()
ca
ist ein trainierter Auto-Encoder. Es ist eine Instanz der Klasse cA
. Aus dem Skript, in dem ich das Modell baue und speichere, kann ich problemlos ca.get_reconstructed_input(...)
und ca.get_hidden_values(...)
aufrufen.
In einem anderen Skript versuche ich das trainierte Modell zu laden.
# loading the trained model
model_file = file('models/simple_model.save', 'rb')
ca = cPickle.load(model_file)
model_file.close()
Ich erhalte den folgenden Fehler.
ca = cPickle.load(model_file)
AttributeError: 'module' object has no attribute 'cA'
Der Fehler, den ich sehe, ist auf die Tatsache zurückzuführen, dass ich "Import cA" anstelle von "cA import cA" verwende. Der Code, den ich gepostet habe, ist ansonsten korrekt. Ihre Alternativen sind auch richtig. Ich denke, der sauberste Weg, um diesen Thread zu schließen, ist, dass Sie etwas in Ihrem ersten Absatz hinzufügen (was die wahre Ursache des Problems identifiziert), wie "vergewissern Sie sich, dass Sie' 'aus cA importieren und nicht nur' importieren cA' ", und ich könnte deine Antwort als akzeptiert markieren. Danke! – xagg
Für mich ist das Laden eines Modells von cpickle ungefähr so langsam wie das Kompilieren. –
Soweit ich verstand, ist es sehr wichtig, dass diese Gurke Datei auf die gleiche Hardware gebunden wird im Wesentlichen zu wissen, zumindest können Sie kein CUDA-basiertes Modell auf einer CPU-basierte Theano laden. Ich war sehr überrascht von der Tatsache, dass es eine nicht-triviale Aufgabe ist, die erlernten Netzwerke zwischen verschiedenen Hardwares zu übertragen. – flaschenpost