Я разрабатываю модель на основе PyTorch, в которой для вычислений используются вложенные циклы.
Я столкнулся с препятствием при попытке вычислить градиенты. Процесс обратного распространения ошибки завершается сбоем из-за, по-видимому, операций внутри циклов.
Вот минимальный пример, иллюстрирующий проблему:
import torch
# Setup
length, dx = 1000, 100
num_rows, num_cols = 5, int(length / dx) + 1
# Parameters requiring gradients
C = torch.rand(num_rows, requires_grad=True)
D = torch.rand(num_rows, requires_grad=True)
qobs = torch.rand(num_rows)
# Intermediate calculations
Caux = 1 + C + D
C0, C1, C2 = (-1 + C + D) / Caux, (1 + C - D) / Caux, (1 - C + D) / Caux
# Main computation
qprop = torch.zeros((num_rows, num_cols))
qprop[:, 0] = qobs
for j in range(1, num_cols):
for n in range(1, num_rows):
qprop[n, j] = (C2[n] * qprop[n-1, j-1] +
C1[n] * qprop[n, j-1] +
C0[n] * qprop[n-1, j])
# Attempt gradient computation
loss = qprop.sum()
loss.backward() # This operation fails
Подробнее здесь: https://stackoverflow.com/questions/790 ... orch-loops
Операции на месте при вычислении градиента во вложенных циклах PyTorch ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Проблема C++: «разрыв» во вложенных циклах for не работает должным образом?
Anonymous » » в форуме C++ - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Проблема C++: «разрыв» во вложенных циклах for не работает должным образом?
Anonymous » » в форуме C++ - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-
Мобильная версия