слой caffe `Python` не найден?

Я установил caffe, раскомментировав

WITH_PYTHON_LAYER=1

in 'Makefile.config'

Когда я использую слой данных python в своем net.prototxt, он говорит

Unknown layer type: Python

Чтобы проверить это в интерфейсе Python, я попытался

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

это, кажется, работает, тогда нет ошибки. В чем проблема?


person curio17    schedule 07.02.2017    source источник
comment
Если создать сеть с pycaffe (L.Python()) и действительно запустить ее - работает или тоже ошибка?   -  person hbaderts    schedule 07.02.2017
comment
Вы скомпилировали caffe после установки WITH_PYTHON_LAYER = 1?   -  person Shai    schedule 07.02.2017


Ответы (1)


Вы можете узнать, какие типы слоев есть у caffe в python, просто изучив caffe.layer_types_list(). Например, если у вас действительно есть слой "Python", то

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

На самом деле должен возвращать индекс для своего имени в списке типов слоев.

Что касается L.Python() - этот интерфейс caffe.NetSpec() используется для программной записи net prototxt, и на этапе написания типы слоев не проверяются. На самом деле вы можете написать любой слой, который хотите:

L.YouDontThinkTheyNameALayerLikeThis()

Совершенно круто. Даже преобразовав его в prototxt:

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

На самом деле результаты с этим:

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

Вы получите сообщение об ошибке, как только попытаетесь запустить эту «сеть» с помощью caffe...

person Shai    schedule 07.02.2017