Pytorch.autograd.grad показывает ошибку «TypeError: неподдерживаемые типы операндов для +: 'NoneType' и 'NoneType'Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pytorch.autograd.grad показывает ошибку «TypeError: неподдерживаемые типы операндов для +: 'NoneType' и 'NoneType'

Сообщение Anonymous »

Я пытаюсь найти градиенты поля скорости с помощью torch.autograd. Первоначально я присвоил координаты своего домена с помощью функции с именем «generate_coords», затем передал их функции «compute_gradients» для расчета градиентов. Моя форма поля скорости — [30,2,32,32] (2 канала для Ux и Uy).
Это код, который я использовал для вычисления градиенты:
def generate_coords(height, width, x_max, y_max):
x = torch.linspace(0, x_max, width)
y = torch.linspace(0, y_max, height)
xx, yy = torch.meshgrid(x, y, indexing='ij')
coords = torch.stack([xx, yy], dim=0)
coords = coords.unsqueeze(0)
return coords

def compute_gradients(U, coords):
U = U.requires_grad_()
coords = coords.requires_grad_()

Ux = U[:, 0, :, :] # Extracting Ux component
Uy = U[:, 1, :, :] # Extracting Uy component

x_coords = coords[:, 0, :, :] # Extracting x coordinates
y_coords = coords[:, 1, :, :] # Extracting y coordinates

# Computing the gradients
grad_Ux_x = torch.autograd.grad(outputs=Ux, inputs=x_coords, grad_outputs=torch.ones_like(Ux), create_graph=True, allow_unused=True)[0]
grad_Uy_y = torch.autograd.grad(outputs=Uy, inputs=y_coords, grad_outputs=torch.ones_like(Uy), create_graph=True, allow_unused=True)[0]

# Computing residuals
residuals = grad_Ux_x + grad_Uy_y

return residuals

coords = generate_coords(32, 32, 2520, 504)
grad_Ux_x, grad_Uy_y = compute_gradients(torch.tensor(actual_image_inputs_test), coords)
print(grad_Ux_x, grad_Uy_y)

Но показывает эту ошибку:
`TypeError Traceback (most recent call last)
Cell In[98], line 29
26 return residuals
28 coords = generate_coords(32, 32, 2520, 504)
---> 29 grad_Ux_x, grad_Uy_y = compute_gradients(torch.tensor(actual_image_inputs_test), coords)
30 print(grad_Ux_x, grad_Uy_y)

Cell In[98], line 24, in compute_gradients(U, coords)
21 grad_Uy_y = torch.autograd.grad(outputs=Uy, inputs=y_coords, grad_outputs=torch.ones_like(Uy), create_graph=True, allow_unused=True)[0]
23 # Computing residuals
---> 24 residuals = grad_Ux_x + grad_Uy_y
26 return residuals

TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType`


Подробнее здесь: https://stackoverflow.com/questions/786 ... -types-for
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»