| 165 | |
| 166 | |
| 167 | def operator_sum(self: Variable, name: Optional[str]) -> "Variable": |
| 168 | r = Variable(torch.sum(self.value), name=name) |
| 169 | # print(f'{r.name} = {self.name}.sum()') |
| 170 | |
| 171 | def propagate(dL_doutputs: List[Variable]): |
| 172 | (dL_dr,) = dL_doutputs |
| 173 | size = self.value.size() |
| 174 | return [dL_dr.expand(*size)] |
| 175 | |
| 176 | gradient_tape.append( |
| 177 | TapeEntry(inputs=[self.name], outputs=[r.name], propagate=propagate) |
| 178 | ) |
| 179 | return r |
| 180 | |
| 181 | |
| 182 | def operator_expand(self: Variable, sizes: List[int]) -> "Variable": |