Beispiel #1
0
    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)
Beispiel #2
0
 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)
Beispiel #3
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)
Beispiel #4
0
 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)
Beispiel #5
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)
Beispiel #6
0
 def setUp(self):
     net_file = python_net_file()
     self.net = caffe_double.Net(net_file, caffe.TRAIN)
     os.remove(net_file)
Beispiel #7
0
 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)
Beispiel #8
0
 def test_deploy(self):
     net = caffe_double.Net(self.f.name, caffe.TEST, stages=['deploy'])
     self.check_net(net, ['pred'])
Beispiel #9
0
 def test_val(self):
     net = caffe_double.Net(self.f.name, caffe.TEST, stages=['val'])
     self.check_net(net, ['loss'])
Beispiel #10
0
 def test_train(self):
     net = caffe_double.Net(self.f.name, caffe.TRAIN, stages=['train'])
     self.check_net(net, ['loss'])
Beispiel #11
0
 def test_AandB(self):
     net = caffe_double.Net(self.f.name, caffe.TEST, stages=['A', 'B'])
     self.check_net(net, ['A', 'B', 'AorB', 'AandB'])
Beispiel #12
0
 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'])
Beispiel #13
0
 def test_0(self):
     net = caffe_double.Net(self.f.name, caffe.TEST)
     self.check_net(net, ['NoLevel', 'Level0Only', 'Level>=0'])