Neural network pytorch:zero_grad vs zero_grad()-括号的作用?
我正在尝试按如下方式训练pytorch模型:Neural network pytorch:zero_grad vs zero_grad()-括号的作用?,neural-network,pytorch,Neural Network,Pytorch,我正在尝试按如下方式训练pytorch模型: start = time.time() for epoch in range(100): t_loss = 0 for i in range(100): optimizer.zero_grad scores = my_model(sent_dict_list[i]) scores = scores.permute(0, 2, 1) loss = loss_fun
start = time.time()
for epoch in range(100):
t_loss = 0
for i in range(100):
optimizer.zero_grad
scores = my_model(sent_dict_list[i])
scores = scores.permute(0, 2, 1)
loss = loss_function(scores, torch.tensor(targ_list[i]).cuda())
t_loss += loss.item()
loss.backward()
optimizer.step()
print("t_loss = ", t_loss)
我发现,当我调用“optimizer.zero_grad”时,我的损失在每个时代结束时都会减少,而当我调用带有括号的“optimizer.zero_grad()”时,损失几乎保持不变。我不知道这有什么区别,希望有人能给我解释一下。我想你是python新手,“()”表示简单的函数调用。 考虑这个例子:
>>> def foo():
print("function")
>>> foo
<function __main__.foo>
>>> foo()
function
回到您的问题,您必须调用该函数,否则它将无法工作 optimizer.zero_grad只是一个函数名。用括号调用函数
>>> [foo, foo, foo]