Ответ 1
Вы можете использовать слой "Python"
: уровень, реализованный в python для подачи данных в вашу сеть. (См. Пример добавления слоя type: "Python"
здесь).
import sys, os
sys.path.insert(0, os.environ['CAFFE_ROOT']+'/python')
import caffe
class myInputLayer(caffe.Layer):
def setup(self,bottom,top):
# read parameters from `self.param_str`
...
def reshape(self,bottom,top):
# no "bottom"s for input layer
if len(bottom)>0:
raise Exception('cannot have bottoms for input layer')
# make sure you have the right number of "top"s
if len(top)!= ...
raise ...
top[0].reshape( ... ) # reshape the outputs to the proper sizes
def forward(self,bottom,top):
# do your magic here... feed **one** batch to `top`
top[0].data[...] = one_batch_of_data
def backward(self, top, propagate_down, bottom):
# no back-prop for input layers
pass
Для получения дополнительной информации о param_str
см. этот поток.
Вы можете найти эскиз слоя загрузки данных с предварительным извлечением здесь.