Использовать пользовательский слой срезов в caffe, не зная размера top до времени выполнения? - PullRequest
0 голосов
/ 09 мая 2019

Возможно ли это с кофе?Насколько я могу судить, установка и изменение формы выполняются без знания данных.Мой пользовательский слой срезов (слой Python) нацелен на выбор умных пар "на лету" для сиамского обучения.Тем не менее, распределение классов немного варьируется между каждой мини-партии.

Я пытаюсь реализовать это как слой Python в форме:

<!-- language: lang-py -->
class custom_slice_layer(caffe.Layer):
  def setup(self, bottom, top):
    # check top, bottom blobsvecs match desired size.

  def reshape(self, bottom, top):
    # reshape to the right size?  This is The error happens during the reshape step.

  def forward(self, bottom, top):
    # pick desired pairs for siamese training (to be fed into the default contrastive loss layer)

  def backward(self, top, propagate_down, bottom):
    # combine the gradients for backprop

По понятным причинам, я сейчас получаю эту ошибку при запуске:

I0509 09:21:46.434281 14750 net.cpp:122] Setting up custom_slice_name
I0509 09:21:46.434306 14750 net.cpp:129] Top shape: (0)
I0509 09:21:46.434312 14750 net.cpp:129] Top shape: (0)
I0509 09:21:46.434319 14750 net.cpp:129] Top shape: (0)
I0509 09:21:46.434324 14750 net.cpp:137] Memory required for data: 790788800
I0509 09:21:46.434332 14750 layer_factory.hpp:77] Creating layer contrastiveloss
I0509 09:21:46.434350 14750 net.cpp:84] Creating Layer contrastiveloss
I0509 09:21:46.434360 14750 net.cpp:406] contrastiveloss <- ip2A
I0509 09:21:46.434370 14750 net.cpp:406] contrastiveloss <- ip2B
I0509 09:21:46.434377 14750 net.cpp:406] contrastiveloss <- sim
I0509 09:21:46.434387 14750 net.cpp:380] contrastiveloss -> contrastive_loss
F0509 09:21:46.434793 14750 blob.hpp:122] Check failed: axis_index < num_axes() (0 vs. 0) axis 0 out of range for 0-D Blob with shape (0)
*** Check failure stack trace: ***
Abort (core dumped)
...