2017-02-07 5 views
1

Ich habe installiert caffe, uncommentingcaffe `" Python "` Schicht nicht gefunden?

WITH_PYTHON_LAYER=1 

in 'Makefile.config'

Wenn ich eine Python-Datenschicht in meinem net.prototxt verwenden, heißt es

Unknown layer type: Python 

, um die Verschreibungs es in Python-Schnittstelle, Ich versuchte

import caffe 
from caffe import layers as L 
L.Python() 

das scheint zu funktionieren, kein Fehler dann. Wo ist das Problem?

+0

Wenn Sie ein Netzwerk mit pycaffe ('L.Python()') erstellen und wirklich * run * es - funktioniert es, oder gibt es auch einen Fehler? – hbaderts

+0

Hast du ** nach der Einstellung 'WITH_PYTHON_LAYER = 1' ** kompiliert? – Shai

Antwort

1

Sie können herausfinden, welche Layer-Typen caffe in Python hat, indem Sie einfach caffe.layer_types_list() untersuchen. Zum Beispiel, wenn Sie tatsächlich eine "Python" Schicht, dann

list(caffe.layer_type_list()).index('Python') 

Sollte ein Index für seinen Namen in der Ebenentypen Liste tatsächlich zurück.

Wie für L.Python() - diese caffe.NetSpec() Schnittstelle wird verwendet, um einen Netzprototxt programmatisch zu schreiben, und in der Schreibphase werden Layertypen nicht überprüft. Sie können tatsächlich schreiben, welche Schicht Sie wollen:

L.YouDontThinkTheyNameALayerLikeThis() 

Ist total cool. Selbst Umwandlung in prototxt:

print "{}".format(L.YouDontThinkTheyNameALayerLikeThis().to_proto()) 

Eigentlich ergibt sich mit diesem:

layer { 
    name: "YouDontThinkTheyNameALayerLikeThis1" 
    type: "YouDontThinkTheyNameALayerLikeThis" 
    top: "YouDontThinkTheyNameALayerLikeThis1" 
} 

Sie erhalten eine Fehlermeldung erhalten, wenn Sie versuchen, dieses "net" mit caffe zu laufen ...