Я пытаюсь понять, как операция по снижению, которую делает Pytorch в своем обратном проходе для трансформированных тензоров, на самом деле работает под капюшоном. Я пытаюсь сделать библиотеку CPP для нейронных сетей и некоторое время застрял на этом шаге. Я понимаю, что использование механизма отслеживания поможет, но я не уверен, насколько сглаживаются и суммирование/средние операции будут применяться в этом смысле. Но в целом эта идея, как она в основном знает, какая операция сокращает работу. Очень простым примером может быть тензор формы [2,3,4,5], транслированного в [3,2,3,4,5], и операция по сокращению как Torch.sum () при DIM 0 может вернуть его к [2,3,4,5] с KeepDims как ложные. Теперь, когда Autograd работает, вещание семантики удерживается, но тогда какова идея идентификации, которая уменьшает операции и какой порядок им необходимо применить, чтобы вернуть форму, чтобы градиент мог быть передан назад (Autodiff режима обратного режима.). На мой взгляд, я думал о том, чтобы сохранить стопку вещательных операций в тензоре, когда они применяются, а затем отменить это, но это не соблюдает: обратное вещание с тумбочками в форме может быть сглаженным или суммированием вдоль этого размера. Я надеюсь, что это поможет прояснить мой вопрос.
Подробнее здесь: https://stackoverflow.com/questions/797 ... peration-t