Ошибка Caffe при тестировании: Ошибка проверки: count_ == proto.data_size() (9408 против 0)

Я обучил googlenet на Caffe и теперь хочу провести тестирование, поэтому я использую deploy.prototxt и предварительно обученные веса и назначаю их Net. Но я получаю эту ошибку (что интересно, после сообщения о том, что сеть инициализирована)

I0927 17:51:41.171922  5336 net.cpp:255] Network initialization done.
I0927 17:51:41.195708  5336 net.cpp:744] Ignoring source layer label_imgdata_1_split
F0927 17:51:41.195746  5336 blob.cpp:496] Check failed: count_ == proto.data_size() (9408 vs. 0) 

По-видимому, я не могу скопировать и вставить все прототипы из-за ограничения количества символов здесь. Я добавляю, как это выглядит без тела, которое более или менее одинаково (за исключением частей фазы: ПОЕЗД и фаза: ТЕСТ). Тело идентично приведенному здесь примеру: https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet

Одно примечание: я читаю данные hdf5 во время обучения и просто использую скрипт python во время теста (я выполняю ту же предварительную обработку, что и при создании данных hdf5, поэтому я не использую io.transform caffe и не вычитаю среднее значение вообще (так работает лучше)) - хотя ошибка во время инициализации и не читается в части данных

Как выглядит мое развертывание:

name: "GoogleNet"
layer {
  name: "data"
  type: "Input"
  top: "data"
  input_param { shape: { dim: 10 dim: 3 dim: 224 dim: 224 } }
}

.....

  layer {
  name: "loss3/classifier"
  type: "InnerProduct"
  bottom: "pool5/7x7_s1"
  top: "loss3/classifier"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  inner_product_param {
    num_output: 7
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}

layer {
  name: "prob"
  type: "Softmax"
  bottom: "loss3/classifier"
  top: "prob"
}

А вот как выглядит мой прототип поезда:

name: "GoogleNet"

layer {
  name: "imgdata"
  type: "HDF5Data"
  top: "label"
   hdf5_data_param {
      source: "/media/DATA/DetDataWOMeanSubt/train_h5_list.txt"
      batch_size: 64
      shuffle: true
      }
  include {
    phase: TRAIN
  }

}

layer {
  name: "imgdata"
  type: "HDF5Data"
  top: "imgdata"
  top: "label"
   hdf5_data_param {
      source: "/media/DATA/DetDataWOMeanSubt/eval_h5_list.txt"
      batch_size: 128
      shuffle: true
      }
 include {
    phase: TEST
  }
}

....

layer {
  name: "loss3/classifier"
  type: "InnerProduct"
  bottom: "pool5/7x7_s1"
  top: "loss3/classifier"
  inner_product_param {
    num_output: 7
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "loss3/classifier"
  bottom: "label"
  top: "loss"
  loss_weight: 1
}
layer {
  name: "accuracy/top-1"
  type: "Accuracy"
  include { phase: TEST }
  bottom: "loss3/classifier"
  bottom: "label"
  top: "accuracy/top-1"
  accuracy_param { top_k: 1 }
}

И вот как я инициализирую сеть:

net = caffe.Net(model_def,      # defines the structure of the model
                model_weights,  # contains the trained weights
                caffe.TEST)     # use test mode (e.g., don't perform dropout)

И я получаю это предупреждение перед инициализацией сети (кажется, что она все равно продолжает инициализацию сети)

DEPRECATION WARNING - deprecated use of Python interface
W0927 17:51:40.486548  5336 _caffe.cpp:140] Use this instead (with the named "weights" parameter):
W0927 17:51:40.486551  5336 _caffe.cpp:142] Net('/home/x/Desktop/caffe-caffe-0.16/models/bvlc_googlenet/deploy.prototxt', 1, weights='/home/x/Desktop/caffe-caffe-0.16/models/bvlc_googlenet/logs_iter_60000.caffemodel')

(Но когда я делаю, как было предложено, это не работает)

Я много раз проводил тестирование, прежде чем использовать Caffe, я не знаю, почему это не работает.


person dusa    schedule 28.09.2018    source источник


Ответы (1)


Если кому интересно, оказывается, я тренировал модель с другой версией caffe и пытался протестировать с другой. У меня на компьютере установлены две версии, и кажется, что я просто импортировал более старую во время тестирования с помощью скрипта Python (для обучения я напрямую ссылался и использовал инструменты caffe в процессе сборки), который определен в LD_LIBRARY_PATH. Разница между версиями не слишком разительна, но, похоже, при чтении прототокса произошло несоответствие.

person dusa    schedule 29.09.2018