def test_parameter(self): net_file = parameter_net_file() net = caffe_double.Net(net_file, caffe.TRAIN) # Test forward and backward net.forward() net.backward() layer = net.layers[list(net._layer_names).index('layer')] self.assertEqual(layer.blobs[0].data[0], 0) self.assertEqual(layer.blobs[0].diff[0], 1) layer.blobs[0].data[0] += layer.blobs[0].diff[0] self.assertEqual(layer.blobs[0].data[0], 1) # Test saving and loading h, caffemodel_file = tempfile.mkstemp() net.save(caffemodel_file) layer.blobs[0].data[0] = -1 self.assertEqual(layer.blobs[0].data[0], -1) net.copy_from(caffemodel_file) self.assertEqual(layer.blobs[0].data[0], 1) os.remove(caffemodel_file) # Test weight sharing net2 = caffe_double.Net(net_file, caffe.TRAIN) net2.share_with(net) layer = net.layers[list(net2._layer_names).index('layer')] self.assertEqual(layer.blobs[0].data[0], 1) os.remove(net_file)
def test_save_and_read(self): f = tempfile.NamedTemporaryFile(mode='w+', delete=False) f.close() self.net.save(f.name) net_file = simple_net_file(self.num_output) # Test legacy constructor # should print deprecation warning caffe_double.Net(net_file, f.name, caffe.TRAIN) # Test named constructor net2 = caffe_double.Net(net_file, caffe.TRAIN, weights=f.name) os.remove(net_file) os.remove(f.name) for name in self.net.params: for i in range(len(self.net.params[name])): self.assertEqual( abs(self.net.params[name][i].data - net2.params[name][i].data).sum(), 0)
def setUp(self): self.num_output = 13 net_file = simple_net_file(self.num_output) self.net = caffe_double.Net(net_file, caffe.TRAIN) # fill in valid labels self.net.blobs['label'].data[...] = \ np.random.randint(self.num_output, size=self.net.blobs['label'].data.shape) os.remove(net_file)
def test_save_hdf5(self): f = tempfile.NamedTemporaryFile(mode='w+', delete=False) f.close() self.net.save_hdf5(f.name) net_file = simple_net_file(self.num_output) net2 = caffe_double.Net(net_file, caffe.TRAIN) net2.load_hdf5(f.name) os.remove(net_file) os.remove(f.name) for name in self.net.params: for i in range(len(self.net.params[name])): self.assertEqual( abs(self.net.params[name][i].data - net2.params[name][i].data).sum(), 0)
def test_phase(self): net_file = phase_net_file() for phase in caffe_double.TRAIN, caffe.TEST: net = caffe_double.Net(net_file, phase) self.assertEqual(net.forward()['phase'], phase)
def setUp(self): net_file = python_net_file() self.net = caffe_double.Net(net_file, caffe.TRAIN) os.remove(net_file)
def load_net(self, net_proto): f = tempfile.NamedTemporaryFile(mode='w+', delete=False) f.write(str(net_proto)) f.close() return caffe_double.Net(f.name, caffe.TEST)
def test_deploy(self): net = caffe_double.Net(self.f.name, caffe.TEST, stages=['deploy']) self.check_net(net, ['pred'])
def test_val(self): net = caffe_double.Net(self.f.name, caffe.TEST, stages=['val']) self.check_net(net, ['loss'])
def test_train(self): net = caffe_double.Net(self.f.name, caffe.TRAIN, stages=['train']) self.check_net(net, ['loss'])
def test_AandB(self): net = caffe_double.Net(self.f.name, caffe.TEST, stages=['A', 'B']) self.check_net(net, ['A', 'B', 'AorB', 'AandB'])
def test_1(self): net = caffe_double.Net(self.f.name, caffe.TEST, level=1) self.check_net(net, ['NoLevel', 'Level1Only', 'Level>=0', 'Level>=1'])
def test_0(self): net = caffe_double.Net(self.f.name, caffe.TEST) self.check_net(net, ['NoLevel', 'Level0Only', 'Level>=0'])