bottom[0].diff[...] = 10 * top[0].diff
+class ExceptionLayer(caffe.Layer):
+ """A layer for checking exceptions from Python"""
+
+ def setup(self, bottom, top):
+ raise RuntimeError
+
+
def python_net_file():
with tempfile.NamedTemporaryFile(delete=False) as f:
f.write("""name: 'pythonnet' force_backward: true
return f.name
+def exception_net_file():
+ with tempfile.NamedTemporaryFile(delete=False) as f:
+ f.write("""name: 'pythonnet' force_backward: true
+ input: 'data' input_shape { dim: 10 dim: 9 dim: 8 }
+ layer { type: 'Python' name: 'layer' bottom: 'data' top: 'top'
+ python_param { module: 'test_python_layer' layer: 'ExceptionLayer' } }
+ """)
+ return f.name
+
+
class TestPythonLayer(unittest.TestCase):
def setUp(self):
net_file = python_net_file()
for blob in self.net.blobs.itervalues():
for d in blob.data.shape:
self.assertEqual(s, d)
+
+ def test_exception(self):
+ net_file = exception_net_file()
+ self.assertRaises(RuntimeError, caffe.Net, net_file, caffe.TEST)
+ os.remove(net_file)