Код: Выделить всё
import torch
import torch.nn as nn
class PINN(nn.Module):
def __init__(self, input_dim, output_dim, hidden_layers, neurons_per_layer):
super(PINN, self).__init__()
layers = []
layers.append(nn.Linear(input_dim, neurons_per_layer))
for _ in range(hidden_layers):
layers.append(nn.Linear(neurons_per_layer, neurons_per_layer))
layers.append(nn.Linear(neurons_per_layer, output_dim))
self.network = nn.Sequential(*layers)
def forward(self, x):
return self.network(x)
# Example: generating random input data
inputs = torch.rand((1000, 3)) # 3D input coordinates
model = PINN(input_dim=3, output_dim=3, hidden_layers=4, neurons_per_layer=64)
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
epochs = 10000
for epoch in range(epochs):
optimizer.zero_grad()
nn_output = model(inputs) # Compute the NN prediction
# Compute e.g gradient of nn_output
loss.backward()
optimizer.step()
Чтобы рассчитать потери в каждую эпоху, мне нужно иметь значение количества во всех точках. Пример: для N=1000точек мне нужны все 1000 NN-прогнозов, прежде чем я смогу приступить к расчету потерь.
В моем коде я в основном даю 1000x3 объект на входной слой, предполагая, что pytorch передает каждую строку (
Код: Выделить всё
1x3Работает ли Pytorch так или мне придется переосмыслить этот подход?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ll-samples
Мобильная версия