DeepKoopmaxMain.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from DeepKoopmanModel import DeepKoopManConfig, DeepKoopMan
  2. from AutoEncoderModel import AutoEncoder
  3. import torch
  4. from sklearn.model_selection import train_test_split
  5. torch.random.manual_seed(42)
  6. config = DeepKoopManConfig(
  7. state_dim=13,
  8. latent_dim=100,
  9. hidden_dim=100,
  10. )
  11. device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
  12. AutoEncoderModel = torch.load('./AutoEncoder/AutoEncoderModel.pt', map_location="cpu")
  13. AutoEncoderModel = AutoEncoderModel.to(device)
  14. Encoder = AutoEncoderModel.encoder
  15. Decoder = AutoEncoderModel.decoder
  16. model = DeepKoopMan(
  17. config=config,
  18. encoder=Encoder,
  19. decoder=Decoder
  20. )
  21. test_size = 0.2
  22. val_size = 0.2
  23. batch_size = 256
  24. epochs = 100
  25. lr = 1e-3
  26. Data = torch.load('./DataLib/DataSeqTensor.pt')
  27. # Data = Data[:1000, :, :]
  28. Data_temp, Data_train = train_test_split(Data, test_size=1 - test_size - val_size, random_state=42)
  29. Data_test, Data_val = train_test_split(Data_temp, test_size=test_size / (test_size + val_size),
  30. random_state=42)
  31. TrainLoss, ValLoss = model.deepkoopman_train(
  32. batch_size=batch_size,
  33. epochs=epochs,
  34. lr=lr,
  35. data_train=Data_train,
  36. data_val=Data_val
  37. )
  38. torch.save(model, './ModelLib/DeepKoopmanModel.pt')