【发布时间】:2019-11-16 18:20:17
【问题描述】:
首先我想,在损失计算和更新步骤之后没有更新,但是下面的代码给了我错误,证明有更新:
before = list(model.parameters())[0].clone()
loss.backward()
optimizer.step()
after = list(model.parameters())[0].clone()
logging.info(torch.equal(before.data, after.data))
然后我想通过下面的代码来看看 chage 的大小:
list(model.parameters())[0].grad
这给我带来的变化非常小:
tensor([[ 3.2294e-07, 7.3983e-06, 6.5637e-06, ..., -1.3529e-06,
2019-11-16T17:21:03.747068480Z -4.9979e-06, 4.9799e-06],
2019-11-16T17:21:03.747074966Z [ 5.5463e-08, 3.0771e-06, -9.5087e-07, ..., 1.9265e-06,
2019-11-16T17:21:03.747080687Z -4.5251e-06, -7.1564e-07].....]
这是我的模型:
self.lstm_hidden_dim = lstm_hidden_dim
self.lstm = nn.LSTM(word_embedding_dim,lstm_hidden_dim, num_layers=1,batch_first=False,bidirectional=True)
self.firstHidden = nn.Linear(lstm_hidden_dim*2, 300)
self.relu=nn.ReLU()
self.secondlinear=nn.Linear(300, score_space_size)
self.softmax= nn.LogSoftmax(dim=1)
损失函数和优化器:
loss_function = nn.NLLLoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)
任何想法,为什么毕业生很小?
【问题讨论】:
标签: python optimization deep-learning pytorch lstm