def lenet(lmdbData, lmdbLabel, batch_size): n = NetSpec() n.data = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdbData, transform_param=dict(scale=1./255), ntop=1) n.label = L.Data(batch_size=batch_size, backend=P.Data.LMDB, source=lmdbLabel, transform_param=dict(scale=1./255), ntop=1) n.conv1 = L.Convolution(n.data, kernel_size=4, num_output=200, weight_filler=dict(type='xavier')) n.pool1 = L.Pooling(n.conv1, kernel_size=2, stride=2, pool=P.Pooling.MAX) n.conv2 = L.Convolution(n.pool1, kernel_size=3, num_output=50, weight_filler=dict(type='xavier')) n.pool2 = L.Pooling(n.conv2, kernel_size=2, stride=1, pool=P.Pooling.MAX) n.fc1 = L.InnerProduct(n.pool2, num_output=200, weight_filler=dict(type='xavier')) n.relu1 = L.ReLU(n.fc1, in_place=True) n.score = L.InnerProduct(n.relu1, num_output=1200, weight_filler=dict(type='xavier')) n.loss = L.Python(n.score, n.label, module='pyloss', layer='EuclideanLossLayer') return n.to_proto()
def gen_net(batch_size=512): n=NetSpec(); n.data = L.DummyData(shape={"dim":[batch_size,3,96,96]}) n.select1 = L.DummyData(shape={"dim":[2]}) n.select2 = L.DummyData(shape={"dim":[2]}) n.label = L.DummyData(shape={"dim":[2]}) caffenet_stack(n.data, n) n.first = L.BatchReindex(n.fc6, n.select1) n.second = L.BatchReindex(n.fc6, n.select2) n.fc6_concat=L.Concat(n.first, n.second); n.fc7, n.bn7, n.relu7 = fc_relu(n.fc6_concat, 4096, batchnorm=True); n.fc8, n.relu8 = fc_relu(n.relu7, 4096); n.fc9 = L.InnerProduct(n.relu8, num_output=8, weight_filler=dict(type='xavier')); n.loss = L.SoftmaxWithLoss(n.fc9, n.label, loss_param=dict(normalization=P.Loss.NONE)); prot=n.to_proto() prot.debug_info=True return prot;