deep-learning - Variational Autoencoder KL散度损失爆炸,模型返回nan
问题描述
我正在为 MRI 大脑图像(2D 切片)训练 Conv-VAE。模型的输出是sigmoid,损失函数二元交叉熵:
x = input, x_hat = output
rec_loss = nn.functional.binary_cross_entropy(x_hat.view(-1, 128 ** 2), x.view(-1, 128 ** 2),reduction='sum')
但我的问题实际上是KL散度损失:
KL_loss = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())
在训练的某个时刻,KL 散度损失非常高(某处无穷大)
然后我遇到了你可以在下面看到的错误,这可能是导致输出为 nan。关于如何避免这种爆炸的任何建议?
解决方案
推荐阅读
- flutter - 如何自动更新文本而不是 Flutter 中的按钮?
- java - 如何检测砖断路器java中的碰撞
- jasper-reports - JasperReports 列表正在改变框架高度
- jhipster - 将 jhipster 5.8 升级到 6.9.1 版本的最佳方法是什么?
- amazon-web-services - AWS VPC 中的实例无法通过 VPN 访问互联网
- performance - Xamarin Forms:调用 ASP.NET (ASMX) Web 服务时性能非常慢
- javascript - 在反应功能组件上测试酶中的点击事件未通过
- javascript - 为什么我的比较没有产生预期的结果?
- javascript - 如何基于 JSON 响应动态创建折叠组件并传递参数在 React Native 上进行折叠主体
- android - Play商店Android-vitals上的android.view.InflateException异常