美文网首页
keras 3D UnetCNN训练时出现的segmentati

keras 3D UnetCNN训练时出现的segmentati

作者: Denny_sun | 来源:发表于2019-08-16 11:14 被阅读0次

            最近做3D UnetCNN 医学图像的分割。按照GitHub中的https://github.com/ellisdg/3DUnetCNN官方操作,在执行 python train.py和python train_isensee2017.py时,都会出现segmentation fault的问题。查看了很多网上的资料,始终和自己遇到的问题有所差异。

    1)有些人在CPU下可以正常运行,多GPU就不行,有的是单GPU可以,多GPU不行。所以怀疑是Keras多GPU设置的问题,但是程序在CPU和单GPU下仍然会出现segmentation fault的问题。

    2)有时候,cudnn的版本问题也会导致segmentation fault的问题。我尝试了几个版本的cudnn,发现问题依旧存在。

    3)怀疑是数据本身的问题,导致访问内存出错,尝试了Brats2018和Brats2017,结果都一样。

    4)调试程序,用print语句找错误位置,程序运行到Epoch 1/500结束,始终没有找到相应的打印语句。最后找到

    model.fit_generator(generator=training_generator,

                            steps_per_epoch=steps_per_epoch,

                            epochs=n_epochs,

                           validation_data=validation_generator,

                            validation_steps=validation_steps,

                            callbacks=get_callbacks(model_file,

                                                    initial_learning_rate=initial_learning_rate,

                                                    learning_rate_drop=learning_rate_drop,

                                                    learning_rate_epochs=learning_rate_epochs,

                                                    learning_rate_patience=learning_rate_patience,

                                                    early_stopping_patience=early_stopping_patience) )

    找到fit_generator()函数的定义,发现参数位置是不对的callbacks在前面

    应该是:

    model.fit_generator(generator=training_generator,

                            steps_per_epoch=steps_per_epoch,

                            epochs=n_epochs,

                            callbacks=get_callbacks(model_file,

                                                    initial_learning_rate=initial_learning_rate,

                                                    learning_rate_drop=learning_rate_drop,

                                                    learning_rate_epochs=learning_rate_epochs,

                                                    learning_rate_patience=learning_rate_patience,

                                                    early_stopping_patience=early_stopping_patience),

                            validation_data=validation_generator,

                            validation_steps=validation_steps,

                           use_multiprocessing = True)

    程序可以正常运行一个epoch,不会出现segmentation fault的问题。

    但是程序还是未能正常运行。最后发现是Keras版本的问题,我的版本是2.2.4,降级到2.1.2就可以了。

    相关文章

      网友评论

          本文标题:keras 3D UnetCNN训练时出现的segmentati

          本文链接:https://www.haomeiwen.com/subject/wbkfsctx.html