首页 > 解决方案 > PyTorch 神经网络未针对图像对齐任务进行训练

问题描述

我目前正在尝试使用深度学习将成对的图像对齐在一起(也称为配准)。我正在使用类似于自动编码器的模型。输入是扁平化图像大小的 2 倍(由于需要输入一对图像,因此在每个样本的训练期间将这对图像简单地连接起来,然后输入到网络中)。输出是一张图像的大小,这是预期输出的大小(因为配准的任务是输出配准的图像)。

我遇到的问题是我的网络没有“学习”,因为在训练循环的每次迭代期间,网络评估时输出完全相同的张量。这让我相信我的网络没有在学习。我该如何解决这个问题?我在下面发布了我的训练循环。

criterion = nn.MSELoss()
optimizer = optim.Adam(net.parameters(), lr=0.001)

loss_values = [] 
outputs_list = []
for epoch in range(3): 
    for i, data in enumerate(trainloader, 0):
        fixed_sample = data[0][0]
        moving_sample = data[1][0]

        # zero the parameter gradients
        optimizer.zero_grad()

        # forward + backward + optimize
        concat_np = np.concatenate((fixed_sample, moving_sample), axis=None)
        outputs = net(torch.tensor(concat_np, dtype=torch.float32))
        outputs_list.append(outputs)
        loss = criterion(outputs, torch.tensor(torch.flatten(fixed_sample), dtype=torch.float32))
        loss.backward()
        optimizer.step()
        loss_values.append(loss)

每当我评估net(存储在outputs)的输入时,循环的每次迭代都是相同的。

标签: pythonmachine-learningdeep-learningpytorchimage-registration

解决方案


推荐阅读