NiftyNet icon indicating copy to clipboard operation
NiftyNet copied to clipboard

Error messages should be more informative

Open fepegar opened this issue 7 years ago • 0 comments

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

Error:

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

fepegar avatar Oct 31 '18 12:10 fepegar