在val时关于loss一个莫名其妙的问题
收藏
我在训练一个模型进行验证(val)的时候,如果不进行梯度计算,GPU会直接拉满,内存爆掉,请问有朋友遇到过这种问题吗?
# 训练 def vv_step(inp, targ): loss = 0 enc_output, enc_hidden = encoder(inp) dec_hidden = enc_hidden dec_input = paddle.unsqueeze(paddle.to_tensor([comment_word2id_dict.get('')] * BATCH_SIZE), 1) # 教师强制 - 将目标词作为下一个输入 for t in range(1, targ.shape[1]): # 将编码器输出 (enc_output) 传送至解码器 predictions, dec_hidden= decoder(dec_input, dec_hidden, enc_output) loss += getloss(predictions,targ[:, t]) # 使用教师强制 dec_input =paddle.unsqueeze(targ[:, t], 1) batch_loss = (loss / int(targ.shape[1])) # 问题出现在这里,如果下面这行注释掉,GPU就炸了!!!! #batch_loss.backward() return batch_loss
0
收藏
请登录后评论
你这个问题,环境情况什么的都不明确,建议查看一下自己的网络情况,如果有问题可以提一个issue
感觉不进行反向传播就会爆GPU内存没有道理。。。此外,你不是说进行验证吗?进行验证为什么要弄一个反向传播?