在 Caffe 中使用 Memory DataLayer 可以得到 "data_ MemoryDataLayer needs to be initalized by calling Reset"

Using Memory DataLayer in Caffe gives "data_ MemoryDataLayer needs to be initalized by calling Reset"

我计划在 caffe 中进行实时增强。这些是我到目前为止采取的步骤:
1.Replace DataMemoryData 在网络中:

name: "test_network"
layer {
  name: "cifar"
  type: "MemoryData"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  memory_data_param {
   batch_size: 32
   channels: 3
   height: 32
   width: 32
  }

}
layer {
  name: "cifar"
  type: "MemoryData"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
   memory_data_param {
   batch_size: 32
   channels: 3
   height: 32
   width: 32
  }
} 

这是训练代码:

caffe.set_mode_gpu()
maxIter = 100
batch_size = 32
j = 0
for i in range(maxIter):
    #fetch images 
    batch = seq.augment_images(np.transpose(data_train[j: j+batch_size],(0,2,3,1)))
    print('batch-{0}-{1}'.format(j,j+batch_size))
    #set input and solve
    batch = batch.reshape(-1,3,32,32).astype(np.float32)
    net.set_input_arrays(batch, label_train[j: j+batch_size].astype(np.float32))
    j = j + batch_size + 1
    solver.step(1)

但是当代码到达 net.set_input_arrays() 时,它崩溃并出现此错误:

W0405 20:53:19.679730  4640 memory_data_layer.cpp:90] MemoryData does not transform array data on Reset()
I0405 20:53:19.713727  4640 solver.cpp:337] Iteration 0, Testing net (#0)
I0405 20:53:19.719229  4640 net.cpp:685] Ignoring source layer accuracy_training
F0405 20:53:19.719229  4640 memory_data_layer.cpp:110] Check failed: data_ MemoryDataLayer needs to be initalized by calling Reset
*** Check failure stack trace: ***

我找不到 reset() 方法,我该怎么办?

Caffe 中的 MemoryDataLayer 似乎不适合通过 pycaffe 界面使用。

Yeah it's discouraged to use the MemoryDataLayer in Python. Using it also transfers memory ownership from Python to C++ with the Boost bindings and therefore causes memory leaks. Memory will only be released after the network object is destructed in python. So if you're training a network for a long time, you'll run out of memory. It's encouraged to use InputLayer instead, where you can just assign data from a numpy array into the memory blobs.

Link
至于解决方案, 将是不错的选择。