python - 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
)的输入时,循环的每次迭代都是相同的。
解决方案
推荐阅读
- rabbitmq - RabbitMQ:error_logger 进程 CPU 使用率高
- azure - 调试 Http Trigger Azure Function VS 2019
- javascript - 以编程方式评估无需浏览器即可编辑 DOM 的客户端 JavaScript
- c# - 在 JSON 中找到正确的对象并编辑该对象的值 C# Json.Linq
- javascript - 将动态背景图像解析为动态 html 元素
- python-3.x - Discord.py wait_for()
- python - 在 python 中使用 scikit learn 的多元回归模型
- python - 在几个小时内运行 python 脚本
- node.js - 节点 API 未从数据库中获取特定值的数据
- java - 如何防止 cxf-codegen-plugin 为所有 wsdl 文件生成源