| 34 | |
| 35 | template <typename T, typename U> |
| 36 | T expand_grads(const U& mask, const T& outputs) { |
| 37 | T ret(mask.size()); |
| 38 | for (size_t i = 0, j = 0; i < mask.size(); ++i) { |
| 39 | if (mask[i]) { |
| 40 | ret[i] = outputs[j++]; |
| 41 | } |
| 42 | } |
| 43 | return ret; |
| 44 | } |
| 45 | |
| 46 | template <typename T> |
| 47 | T prepare_optimized_backward_inputs( |