Как написать сеть с уровнем памяти данных, используя pycaffe?
Можно написать прототип caffe в pycaffe со слоем данных hdf5 из следующих строк:
import caffe
from caffe import layers as L
def logreg(hdf5, batch_size):
n = caffe.NetSpec()
n.data, n.label = L.HDF5Data(batch_size = batch_size, source = hdf5, ntop = 2)
n.ip1 = L.InnerProduct(n.data, num_output = 2, weight_filler = dict(type='xavier'))
n.accuracy = L.Accuracy(n.ip1, n.label)
n.loss = L.SoftmaxWithLoss(n.ip1, n.label)
return n.to_proto()
with open('models/logreg_auto_train.prototxt', 'w') as f:
f.write(str(logreg('data/train.txt', chunck_size)))
Можно ли использовать подобный метод для написания прототипа, который имеет уровень данных в памяти?
1 ответ
Решение
Попробуйте что-то вроде этого:
import caffe
from caffe import layers as L
def logreg(height, width, channels, batch_size):
n = caffe.NetSpec()
n.data = L.MemoryData(batch_size = batch_size, height = height, width = width, channels = channels)
n.ip1 = L.InnerProduct(n.data, num_output = 2, weight_filler = dict(type='xavier'))
return n.to_proto()
with open('models/logreg_memdata.prototxt', 'w') as f:
f.write(str(logreg(128,128,3, chunck_size)))