我正在尝试使用NiftyNet用我自己的数据(CT图像及其相应的标签)来训练网络。在经过其他培训之后,我使用相似的示例数据,所有我可以找到的所有NiftyNet文档以及调整了我自己的数据的参数,很快设计了Net类。但我不断收到此错误:
“ TypeError: init ()获得了意外的关键字参数'w_initializer'”。
我已经尝试过在config.ini,Net类等中可以想到的所有更改。但是我无法使其起作用,也找不到原因。任何人都可以帮助解决此错误?或者也许从一开始就分享一些指导来训练我自己的网络的准则,这样我至少可以尝试从零开始,寻找一个出路?
训练命令:
! net_segment train -c /home/niftynet/extensions/dense_vnet_TC/config.ini --name dense_vnet_TC.net_TC.MyNet
config.ini中的一些值:
[NETWORK]
name = dense_vnet
batch_size = 6
volume_padding_size = 0
window_sampling = resize
[TRAINING]
sample_per_volume = 1
lr = 0.001
loss_type = dense_vnet_TC.dice_hinge.dice
starting_iter = 0
save_every_n = 1000
max_iter = 3001
[INFERENCE]
border = (0, 0, 0)
inference_iter = 3000
output_interp_order = 0
spatial_window_size = (512, 512, 40)
save_seg_dir = ./segmentation_output/
############################ Custom configuration
[SEGMENTATION]
image = ct
label = label
label_normalisation = False
output_prob = False
num_classes = 2
网络课程的基础:
from niftynet.network.base_net import BaseNet
class MyNet(BaseNet):
def __init__(self, num_classes, name='MyNet'):
super(MyNet, self).__init__(num_classes=num_classes, acti_func=acti_func, name=name)
# network specific property
self.hidden_features = 10
def layer_op(self, images, is_training):
# create layer instances
conv_1 = ConvolutionalLayer(self.hidden_features, kernel_size=3, name='conv_input')
conv_2 = ConvolutionalLayer(self.num_classes, kernel_size=1, acti_func=None, name='conv_output')
# apply layer instances
flow = conv_1(images, is_training)
flow = conv_2(flow, is_training)
return flow
在按预期进行一些处理之后,输出结束:
回溯(最近通话最近):文件
中的“ / home / niftynet / bin / net_segment”,第10行 sys.exit(main())文件“ /home/niftynet/lib/python3.6/site-packages/niftynet/init.py”,
主线142行
app_driver.run(app_driver.app)文件“ /home/niftynet/lib/python3.6/site-packages/niftynet/engine/application_driver.py”,
189行,正在运行
is_training_action = self.is_training_action)文件“ /home/niftynet/lib/python3.6/site-packages/niftynet/engine/application_driver.py”,
第258行,在create_graph
中 application.initialise_network()文件“ /home/niftynet/lib/python3.6/site-packages/niftynet/application/segmentation_application.py”,
初始化网络中的第280行
acti_func = self.net_param.activation_function)TypeError: init ()获得了意外的关键字参数'w_initializer'
答案 0 :(得分:0)
我认为您需要更改此行(基于我遇到的类似问题):
super(MyNet, self).__init__(num_classes=num_classes, acti_func=acti_func, name=name)
用于(只需添加w_regularizer):
super(MyNet, self).__init__(num_classes=num_classes, w_regularizer=w_regularizer, acti_func=acti_func, name=name)
如果不尝试也可以在此处添加它:
def __init__(self, num_classes, w_regularizer=w_regularizer, name='MyNet'):
希望对您有帮助。