2016-10-01 4 views
1
digits 4.0 0.14.0-rc.3 /Ubuntu (aws) 

обучение модели 5 класса GoogLenet с примерно 800 образцами обучения в каждом классе. Я пытался использовать bvlc_imagent в качестве предварительно обученной модели. Эти шаги, которые я взял:Использование bvlc_googlenet в качестве предварительной модели в цифрах - ошибки

  1. скачано imagenet из http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel и поместили его в/дома/убунту/модели

  2. 2.

а. Вставьте «train_val.prototxt» отсюда https://github.com/BVLC/caffe/blob/master/models/bvlc_reference_caffenet/train_val.prototxt в пользовательскую вкладку сети и

b. «#» прокомментировал строки «источник» и «бэкэнд» (так как это было по их усмотрению)

  1. В предварительно подготовленном текстовом поле моделей вставлен путь к '. caffemodel. в моем случае: "/home/ubuntu/models/bvlc_googlenet.caffemodel"

Я получаю эту ошибку:

ERROR: Cannot copy param 0 weights from layer 'loss1/classifier'; shape mismatch. Source param shape is 1 1 1000 1024 (1024000); target param shape is 6 1024 (6144). To learn this layer's parameters from scratch rather than copying from a saved net, rename the layer. 

Я вставленный различные train_val.prototext от проблем GitHub и т.д. и не удач, к сожалению,

Я не уверен, почему это становится настолько сложным, в более старых версиях цифр мы можем просто ввести путь к папке, и он отлично работает для передачи обучения.

Может кто-нибудь помочь?

+0

Вы не должны использовать этот train_val.prototxt: https://github.com/BVLC/caffe/blob/master/models/bvlc_googlenet/train_val.prototxt – Dale

ответ

3

Переименуйте слой из «loss1/classifier» в «loss1/classifier_retrain».

При доводке модели, вот что делает Caffe:

# pseudo-code 
for layer in new_model: 
    if layer.name in old_model: 
    new_model.layer.weights = old_model.layer.weights 

Вы получаете сообщение об ошибке, потому что веса для «убытков1/классификатором» были для задачи классификации 1000-класса (1000x1024), и вы пытаетесь скопировать их в слой для 6-классной классификации (6x1024). Когда вы переименуете слой, Caffe не пытается копировать весы для этого слоя, и вы получаете случайно инициализированные веса - это то, что вы хотите.

Кроме того, я предлагаю вам использовать это описание сети, которое уже настроено как описание сети «все-в-одном» для GoogLeNet. Это избавит вас от некоторых неприятностей.

https://github.com/NVIDIA/DIGITS/blob/digits-4.0/digits/standard-networks/caffe/googlenet.prototxt

 Смежные вопросы

  • Нет связанных вопросов^_^