New ideas
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,59 @@
|
||||
# %%
|
||||
import torch
|
||||
from aiRNN import dataloader, models, losses
|
||||
import pathlib
|
||||
|
||||
# %%
|
||||
file_list = pathlib.Path("/home/lars/Documents/Studium/UiO/data_analysis/project3/Code/cpp/known_routes_and_aircraft.csv")
|
||||
base_path = file_list.parent
|
||||
file_list = file_list.read_text().splitlines()
|
||||
file_list = [(base_path / f).resolve() for f in file_list]
|
||||
|
||||
# %%
|
||||
dataset = dataloader.EvenlySpacedDataset(
|
||||
filepaths=file_list[:500],
|
||||
n_input=30*10, # 10 minutes input
|
||||
n_output=30*1, # 1 minutes output
|
||||
n_windows_per_file=5,
|
||||
step=1,
|
||||
feature_columns=("lat", "lon", "alt", "ias"),
|
||||
context_columns=("last_lat", "last_lon", "last_alt", "last_ias"),
|
||||
time_columns=("timestamp", "dt"),
|
||||
target_columns=("lat", "lon", "alt"),
|
||||
)
|
||||
|
||||
# %%
|
||||
len(dataset)
|
||||
|
||||
# %%
|
||||
test_model = models.ThreeInputRNN(
|
||||
time_in=2,
|
||||
feat_in=4,
|
||||
context_in=4,
|
||||
hidden_size=128,
|
||||
rnn_size=256,
|
||||
out_size=3,
|
||||
)
|
||||
|
||||
# %%
|
||||
# Example training
|
||||
optimizer = torch.optim.Adam(test_model.parameters(), lr=1e-2)
|
||||
scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, patience=5, factor=0.5)
|
||||
criterion = torch.nn.HuberLoss()
|
||||
for epoch in range(50):
|
||||
losses = []
|
||||
for X_f, X_t, y, X_c in torch.utils.data.DataLoader(dataset, batch_size=256, shuffle=True):
|
||||
optimizer.zero_grad()
|
||||
y_pred, _ = test_model(X_t, X_f, X_c, 300, 30)
|
||||
loss = criterion(y_pred, y)
|
||||
loss.backward()
|
||||
optimizer.step()
|
||||
losses.append(loss.item())
|
||||
loss = sum(losses) / len(losses)
|
||||
scheduler.step(loss)
|
||||
print(f"Epoch {epoch}: loss={loss}, lr={optimizer.param_groups[0]['lr']}")
|
||||
|
||||
# %%
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user