关于BP 时候 报错的汇总

关于BP 时候 报错的汇总_第1张图片
前向的时候不报错,但是在 反向BP 的时候报错,这类问题是很难解决的,目前解决了一些方案汇总如下:

1. 检测网络的结构参数,不能出现网络的层数 num_layers 过深的层。
之前 的错误是 背景 Nerfacto MLP的层数 设定为8, 导致会在BP 的时候报错。

2. Debug 的方法 可以使用 try 和 except 这样的函数

try:
	self.grad_scaler.scale(loss).backward()  # type: ignore
except:
	## Save the checkpoint

保存在哪一个 step 会报错的checkpoint, 然后 尝试去 复现 这个错误,如果能复现这个 Bug, 然后去debug 会方便很多。

2. Loss 过大,需要对 Loss multi 的系数进行 Review, 比如 语义前面的系数 一般是 0.01 如果给成 1 很容易出现BP 这样的错误。

loss_dict['semantics_loss'] = semantic_loss_mult * self.cross_entropy_loss(outputs["semantics"],batch['semantics'].squeeze(dim=-1))

注意前面需要乘以系数

你可能感兴趣的:(python,计算机视觉)