Как тренировать данные в NiftyNet - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь обучить сеть, используя NiftyNet с моими собственными данными (изображения CT и их соответствующие метки).Я разработал класс Net вскоре после некоторого другого тренинга с подобными примерами данных, всей документацией NiftyNet, которую я смог найти, и настройкой параметров моих собственных данных.Но я продолжаю получать эту ошибку:

"Ошибка типа: 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

Основы класса Net:

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, в initialise_network
acti_func = self.net_param.activation_function) TypeError: init () получил неожиданный аргумент ключевого слова 'w_initializer'

...