(category_tensor, input_line_tensor, target_line_tensor)
| 278 | learning_rate = 0.0005 |
| 279 | |
| 280 | def train(category_tensor, input_line_tensor, target_line_tensor): |
| 281 | target_line_tensor.unsqueeze_(-1) |
| 282 | hidden = rnn.initHidden() |
| 283 | |
| 284 | rnn.zero_grad() |
| 285 | |
| 286 | loss = torch.Tensor([0]) # you can also just simply use ``loss = 0`` |
| 287 | |
| 288 | for i in range(input_line_tensor.size(0)): |
| 289 | output, hidden = rnn(category_tensor, input_line_tensor[i], hidden) |
| 290 | l = criterion(output, target_line_tensor[i]) |
| 291 | loss += l |
| 292 | |
| 293 | loss.backward() |
| 294 | |
| 295 | for p in rnn.parameters(): |
| 296 | p.data.add_(p.grad.data, alpha=-learning_rate) |
| 297 | |
| 298 | return output, loss.item() / input_line_tensor.size(0) |
| 299 | |
| 300 | |
| 301 | ###################################################################### |
no test coverage detected