NiftyNet
NiftyNet copied to clipboard
Error messages should be more informative
It has always been hard for me to find the line containing information about the errors in NiftyNet output. Oftentimes I find the line that seems to give trouble, but it's not clear to me what I need to do to solve it.
I think this is a recurrent issue for other users as well:
#273 Error:
InvalidArgumentError (see above for traceback): Provided indices are out-of-bounds w.r.t. dense side with broadcasted shape`
Solution:
change
histogram_ref_file
#260 Error:
ResourceExhaustedError (see above for traceback): OOM when allocating tensor of shape [] and type float
Solution:
try reducing the batch size and making sure that the memory on your NVIDIA GPU is cleared before running NiftyNet using nvidia-smi
#170 Error:
CRITICAL:niftynet: Don't know how to generate sampling locations: Spatial dimensions of the grouped input sources are not consistent. {(477, 451, 187), (391, 369, 147)}
Exception in thread Thread-2:
Solution:
the corresponding image and labels have different voxel spacing values stored in header
NiftyNet ValueError: Dimension -1 must be >= 0
Solution:
Set
num_classes = 2.
I'm just posting just the main error line, but for example the traceback for that last error was very verbose:
Traceback (most recent call last):
File "/Users/fernando/anaconda/envs/nn/bin/net_segment", line 11, in <module>
sys.exit(main())
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/__init__.py", line 115, in main
app_driver.run_application()
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/engine/application_driver.py", line 241, in run_application
self.graph = self._create_graph(self.graph)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/engine/application_driver.py", line 309, in _create_graph
self.gradients_collector)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/application/segmentation_application.py", line 266, in connect_data_and_network
net_out = self.net(image, is_training=self.is_training)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/layer/base_layer.py", line 34, in __call__
return self._op(*args, **kwargs)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/template.py", line 455, in __call__
result = self._call_func(args, kwargs)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/template.py", line 406, in _call_func
result = self._func(*args, **kwargs)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/network/vnet.py", line 121, in layer_op
name='R1')(concat_r1, up_1)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/layer/base_layer.py", line 34, in __call__
return self._op(*args, **kwargs)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/template.py", line 455, in __call__
result = self._call_func(args, kwargs)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/template.py", line 406, in _call_func
result = self._func(*args, **kwargs)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/network/vnet.py", line 186, in layer_op
kernel_size=1, with_bias=True)(res_flow)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/layer/base_layer.py", line 34, in __call__
return self._op(*args, **kwargs)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/template.py", line 455, in __call__
result = self._call_func(args, kwargs)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/template.py", line 406, in _call_func
result = self._func(*args, **kwargs)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/layer/convolution.py", line 83, in layer_op
regularizer=self.regularizers['w'])
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 1297, in get_variable
constraint=constraint)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 1093, in get_variable
constraint=constraint)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 439, in get_variable
constraint=constraint)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 408, in _true_getter
use_resource=use_resource, constraint=constraint)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 735, in _get_single_variable
shape = tensor_shape.as_shape(shape)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/framework/tensor_shape.py", line 860, in as_shape
return TensorShape(shape)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/framework/tensor_shape.py", line 458, in __init__
self._dims = [as_dimension(d) for d in dims_iter]
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/framework/tensor_shape.py", line 458, in <listcomp>
self._dims = [as_dimension(d) for d in dims_iter]
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/framework/tensor_shape.py", line 399, in as_dimension
return Dimension(value)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/framework/tensor_shape.py", line 39, in __init__
raise ValueError("Dimension %d must be >= 0" % self._value)
ValueError: Dimension -1 must be >= 0
originally defined at:
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/layer/convolution.py", line 50, in __init__
super(ConvLayer, self).__init__(name=name)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/layer/base_layer.py", line 58, in __init__
super(TrainableLayer, self).__init__(name=name)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/layer/base_layer.py", line 26, in __init__
self._op = tf.make_template(name, self.layer_op, create_scope_now_=True)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/template.py", line 153, in make_template
**kwargs)
originally defined at:
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/network/vnet.py", line 141, in __init__
super(VNetBlock, self).__init__(name=name)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/layer/base_layer.py", line 58, in __init__
super(TrainableLayer, self).__init__(name=name)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/layer/base_layer.py", line 26, in __init__
self._op = tf.make_template(name, self.layer_op, create_scope_now_=True)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/template.py", line 153, in make_template
**kwargs)
originally defined at:
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/engine/application_driver.py", line 295, in _create_graph
self.app.initialise_network()
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/application/segmentation_application.py", line 235, in initialise_network
acti_func=self.net_param.activation_function)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/network/vnet.py", line 39, in __init__
name=name)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/network/base_net.py", line 21, in __init__
super(BaseNet, self).__init__(name=name)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/layer/base_layer.py", line 58, in __init__
super(TrainableLayer, self).__init__(name=name)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/niftynet/layer/base_layer.py", line 26, in __init__
self._op = tf.make_template(name, self.layer_op, create_scope_now_=True)
File "/Users/fernando/anaconda/envs/nn/lib/python3.6/site-packages/tensorflow/python/ops/template.py", line 153, in make_template
**kwargs)
I think Keras does a good job handling this: https://blog.keras.io/user-experience-design-for-apis.html