lmdb = lmdb.open(lmdb_path)
lmdb_txn = lmdb.begin()
lmdb_cursor = lmdb_txn.cursor()
net = caffe.Net(model, weights, caffe.TEST)
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_transpose('data', (2,0,1))
transformer.set_channel_swap('data', (2,1,0))
transformer.set_raw_scale('data', 255.0)
total = 0
correct = 0
count = 0
for key, value in lmdb_cursor:
total += 1
datum = caffe.proto.caffe_pb2.Datum()
datum.ParseFromString(value)
label = int(datum.label)
image = caffe.io.datum_to_array(datum)
image = image.astype(np.uint8)
image = transformer.preprocess('data', image)
out = net.forward_all(data=np.asarray([image]))
plabel = int(out['prob'][0].argmax(axis=0))
if label == plabel:
correct += 1
print "scored: " + str(total) + " actual: " + labels[label] + " predicted: " + labels[plabel] + " correct: " + str(correct) + " accuracy: " + str(float(correct)/float(total))