ZeroDivisionError:在net_segment推断补丁聚合期间,浮点数被零除

时间:2018-08-09 15:14:55

标签: niftynet

我运行了(在Google Cloud VM实例上的Ubuntu 16.04上):

net_segment inference -c <path-to-config>

使用带有unet_2d的softmax和(96,96,1)空间窗口的二进制分割问题。 这是在我将模型训练了10个时间段并保存了检查点之后。我不确定为什么会产生零除错误 来自windows_aggregator_resize.py。此问题的原因是什么,我该怎么解决?

以下是一些推理设置和相应的错误:

pixdim: (1.0, 1.0, 1.0)

[NETWORK]
batch_size: 1
cutoff: (0.01, 0.99)
name: unet_2d
normalisation: False
volume_padding_size: (96, 96, 0)
reg_type: L2
window_sampling: resize
multimod_foreground_type: and

[INFERENCE]
border = (96,96,0)
inference_iter = -1
output_interp_order = 0
spatial_window_size = (96,96,2)

INFO:niftynet: Accessing /home/xchaosfailx1/niftynet/models/MSD/heart_la_seg/models/model.ckpt-10 ...
INFO:niftynet: Restoring parameters from /home/xchaosfailx1/niftynet/models/MSD/heart_la_seg/models/model.ckpt-10
INFO:niftynet: Cleaning up...
WARNING:niftynet: stopped early, incomplete loops
INFO:niftynet: stopping sampling threads
INFO:niftynet: SegmentationApplication stopped (time in second 17.07).
Traceback (most recent call last):
  File "/home/xchaosfailx1/.local/bin/net_segment", line 11, in <module>
    sys.exit(main())
  File "/home/xchaosfailx1/.local/lib/python3.5/site-packages/niftynet/__init__.py", line 139, in main
    app_driver.run_application()
  File "/home/xchaosfailx1/.local/lib/python3.5/site-packages/niftynet/engine/application_driver.py", line 275, in run_application
    self._inference_loop(session, loop_status)
  File "/home/xchaosfailx1/.local/lib/python3.5/site-packages/niftynet/engine/application_driver.py", line 493, in _inference_loop
    self._loop(iter_generator(itertools.count(), INFER), sess, loop_status)
  File "/home/xchaosfailx1/.local/lib/python3.5/site-packages/niftynet/engine/application_driver.py", line 442, in _loop
    iter_msg.current_iter_output[NETWORK_OUTPUT])
  File "/home/xchaosfailx1/.local/lib/python3.5/site-packages/niftynet/application/segmentation_application.py", line 390, in interpret_output
    batch_output['window'], batch_output['location'])
  File "/home/xchaosfailx1/.local/lib/python3.5/site-packages/niftynet/engine/windows_aggregator_resize.py", line 55, in decode_batch
    self._save_current_image(window[batch_id, ...], resize_to_shape)
  File "/home/xchaosfailx1/.local/lib/python3.5/site-packages/niftynet/engine/windows_aggregator_resize.py", line 82, in _save_current_image
    [float(p) / float(d) for p, d in zip(window_shape, image_shape)]
  File "/home/xchaosfailx1/.local/lib/python3.5/site-packages/niftynet/engine/windows_aggregator_resize.py", line 82, in <listcomp>
    [float(p) / float(d) for p, d in zip(window_shape, image_shape)]
ZeroDivisionError: float division by zero

对于重现错误:

2 个答案:

答案 0 :(得分:0)

没有检查推理数据,但我认为spatial_window_size中的[INFERENCE]应该是96, 96, 1,因为这是您在训练中设置的。

答案 1 :(得分:0)

我犯的错误是,我将[Inference]下的边框(96,96,0)设置为与空间窗口(96,96,1)相同的形状,因此在裁剪批处理时decode_batch中,裁剪后的图像的图像形状为0。因此,在_save_current_image中计算缩放比例时,将导致ZeroDivsionError。临时解决方法是删除卷填充并更改border=(0,0,0)