Open linengcs opened 1 month ago
数据的运算过程中出现了float64和float32混用的地方,可能的原因出现在将numpy的array转换成jt的Var,因为np 初始化array默认是float64
我调整后,全程调试检查了数据类型都是float32,但是还是一样的报错
已解决: 将self.optimizer.step(main_loss)修改为: main_loss_value = main_loss.item() self.optimizer.step(main_loss_value) 即可,因为 optimizer.step() 期望接收一个标量(单个数值)的损失值,而不是一个 Var
补充一句:用GPT4协助找了一个礼拜的bug,涉及到方方面面,每次回答都是重复性的,感觉陷入圈套,遂想尝试其他模型得到新的想法,开通了Gemini Pro,把issue全部丢过去,Gemini一次即解决
Describe the bug
在执行self.optimizer.step(main_loss)时报错如下:
其中optimizer选择的是SGD
传入的loss:jt.Var([4.33252289], dtype=float64)
Full Log
Minimal Reproduce