gpt4 book ai didi

python - 为什么我的 pytorch NN 返回一个 nan 的张量?

转载 作者:行者123 更新时间:2023-12-05 06:03:26 25 4
gpt4 key购买 nike

我有一个非常简单的神经网络,它采用扁平化的 6x6 网格作为输入,并应输出要对该网格采取的四个 Action 的值,即 1x4 的值张量。

有时由于某种原因运行几次后我得到一个 1x4 的 nan 张量

tensor([[nan, nan, nan, nan]], grad_fn=<ReluBackward0>)

我的模型看起来像这样,输入暗淡为 36,输出暗淡为 4:

class Model(nn.Module):
def __init__(self, input_dim, output_dim):
# super relates to nn.Module so this initializes nn.Module
super(Model, self).__init__()
# Gridsize as input,
# last layer needs 4 outputs because of 4 possible actions: left, right, up, down
# output values are Q Values need activation function for those like argmax
self.lin1 = nn.Linear(input_dim, 24)
self.lin2 = nn.Linear(24, 24)
self.lin3 = nn.Linear(24, output_dim)

# function to feed the input through the net
def forward(self, x):
# rectified linear as activation function for the first two layers
if isinstance(x, np.ndarray):
x = torch.tensor(x, dtype=torch.float)

activation1 = F.relu(self.lin1(x))
activation2 = F.relu(self.lin2(activation1))
output = F.relu(self.lin3(activation2))

return output

输入是:

tensor([[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.3333, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.3333,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.3333, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.3333, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.6667]])

nan 输出的可能原因是什么?我该如何解决这些问题?

最佳答案

作为输出的 nan 值仅意味着训练不稳定,这可能有各种可能的原因,包括代码中的各种错误。如果您认为您的代码是正确的,您可以尝试通过降低学习率或使用 gradient clipping 来解决不稳定性问题。 .

关于python - 为什么我的 pytorch NN 返回一个 nan 的张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66625645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com