This stores parameter gradients of past tasks. pp: parameters grads: gradients grad_dims: list with number of parameters per layers tid: task id
(pp, grads, grad_dims, tid)
| 24 | |
| 25 | |
| 26 | def store_grad(pp, grads, grad_dims, tid): |
| 27 | """ |
| 28 | This stores parameter gradients of past tasks. |
| 29 | pp: parameters |
| 30 | grads: gradients |
| 31 | grad_dims: list with number of parameters per layers |
| 32 | tid: task id |
| 33 | """ |
| 34 | # store the gradients |
| 35 | grads[:, tid].fill_(0.0) |
| 36 | cnt = 0 |
| 37 | for param in pp(): |
| 38 | if param.grad is not None: |
| 39 | beg = 0 if cnt == 0 else sum(grad_dims[:cnt]) |
| 40 | en = sum(grad_dims[:cnt + 1]) |
| 41 | grads[beg: en, tid].copy_(param.grad.data.view(-1)) |
| 42 | cnt += 1 |
| 43 | |
| 44 | |
| 45 | def overwrite_grad(pp, newgrad, grad_dims): |