n.data1, n.label = L.Data(....)
n.data2 = L.Data(....)
n.conv1_1 = L.Convolution(n.data1, ...)
....
n.pool1_1 = L.Pool(...)
n.conv1_2 = L.Convolution(n.data2, ...)
...
n.pool1_2 = L.Pool(....)
n.conc = L.Concat([n.pool1_1, n.pool1_2])
n = caffe.NetSpec()
n.data1, n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdb[0],
transform_param=dict(scale=1./255), ntop=2)
n.data2 = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdb[1],
transform_param=dict(scale=1./255), ntop=1)
n.conv1_1 = L.Convolution(n.data1, ...)
n.pool1_1 = L.Pooling(n.conv1_1, kernel_size=2, stride=2, pool=P.Pooling.MAX)
n.conv2_1 = L.Convolution(n.pool1_1, ...)
n.pool2_1 = L.Pooling(n.conv2_1, kernel_size=2, stride=2, pool=P.Pooling.MAX)
n.conv1_2 = L.Convolution(n.data2, ...)
n.pool1_2 = L.Pooling(n.conv1_2, kernel_size=2, stride=2, pool=P.Pooling.MAX)
n.conv2_2 = L.Convolution(n.pool1_2, ....)
n.pool2_2 = L.Pooling(n.conv2_2, kernel_size=2, stride=2, pool=P.Pooling.MAX)
n.conc = L.Concat([n.pool2_1, n.pool2_2])
n.ip1 = L.InnerProduct(n.conc, ...)
n.relu1 = L.ReLU(n.ip1, in_place=True)
n.score = L.InnerProduct(n.relu1, ...)
n.accuracy = L.Accuracy(n.score, n.label)
n.loss = L.SoftmaxWithLoss(n.score, n.label)
return n.to_proto()
AttributeError: 'list' object has no attribute '_to_proto'
# Create LMDB database from images
np.shape(imgs) # = [numImgs,15,m,n]
in_db = lmdb.open('lmdbfile', map_size=int(1e9)) #1 GB
with in_db.begin(write=True) as in_txn:
for in_idx, in_ in enumerate(imgs):
el = in_
im_dat = caffe.io.array_to_datum(el)
im_dat.label = someNumber # Or create a second database and data channel to hold labels if more than one dimension is needed here
in_txn.put('{:0>10d}'.format(in_idx), im_dat.SerializeToString())
in_db.close()