首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NiftyNet中进行数据训练

如何在NiftyNet中进行数据训练
EN

Stack Overflow用户
提问于 2019-06-14 17:40:30
回答 1查看 325关注 0票数 0

我正在尝试用我自己的数据(CT图像及其相应的标签)使用NiftyNet来训练一个网络。我使用类似的样本数据、我可以找到的所有NiftyNet文档以及调整了自己的数据的参数,在其他一些培训之后,我很快设计了Net类。但是我不断地发现这个错误:

"TypeError:init()得到了一个意外的关键字参数'w_initializer'“。

我已经尝试过在我的config.ini,网络类,等等,我能想到的每一个改变,但我无法使它工作,也找不到原因。有人能帮忙纠正这个错误吗?或者分享一些指导原则,从一开始就训练我自己的网络,这样我至少可以尝试从零开始另一种选择,看看我是否找到了出路。

训练指挥部:

代码语言:javascript
复制
! net_segment train -c /home/niftynet/extensions/dense_vnet_TC/config.ini --name dense_vnet_TC.net_TC.MyNet

Config.ini中的一些值:

代码语言:javascript
复制
[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

网络课程基础:

代码语言:javascript
复制
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

在按预期完成某些处理之后,输出结束:

追溯(最近一次调用):File “/home/niftynet/bin/net_段”,第10行,在 文件“/sys.exit/niftynet/lib/python3.6/site-sys.exit 第142行,主 "/home/niftynet/lib/python3.6/site-packages/niftynet/engine/application_driver.py",文件app_driver.run(app_driver.app) 第189行,正在运行 文件“/is_training_action=self.is_training_action/niftynet/lib/python3.6/site-is_training_action=self.is_training_action 第258行,create_graph "/home/niftynet/lib/python3.6/site-packages/niftynet/application/segmentation_application.py",文件application.initialise_network() initialise_network中的第280行 acti_func=self.net_param.activation_function) TypeError:init()得到了一个意外的关键字参数'w_initializer‘

EN

回答 1

Stack Overflow用户

发布于 2019-08-07 10:00:21

我认为您需要更改这一行(基于我遇到的类似问题):

代码语言:javascript
复制
super(MyNet, self).__init__(num_classes=num_classes, acti_func=acti_func, name=name)

for (只需添加w_regularizer):

代码语言:javascript
复制
super(MyNet, self).__init__(num_classes=num_classes, w_regularizer=w_regularizer, acti_func=acti_func, name=name)

如果不尝试在这里添加它:

代码语言:javascript
复制
def __init__(self, num_classes, w_regularizer=w_regularizer, name='MyNet'): 

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56602919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档