HyperParamSearch.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import torch
  2. from sklearn.model_selection import train_test_split
  3. from AutoEncoderModel import AutoEncoder
  4. import pandas as pd
  5. input_dim = 13
  6. output_dim = input_dim
  7. path_datax = './DataLib/Data.pt'
  8. path_datay = './DataLib/Data.pt'
  9. test_size = 0.2
  10. val_size = 0.1
  11. batch_size = 256
  12. epochs = 500
  13. DataX = torch.load(path_datax)
  14. DataY = torch.load(path_datay)
  15. # DataX = DataX[:5000, :]
  16. # DataY = DataY[:5000, :]
  17. X_temp, X_train, Y_temp, Y_train = train_test_split(DataX, DataY, test_size=1 - test_size - val_size, random_state=42)
  18. X_test, X_val, Y_test, Y_val = train_test_split(X_temp, Y_temp, test_size=test_size / (test_size + val_size),
  19. random_state=42)
  20. hidden_dim_lib = [256]
  21. latent_dim_lib = [100]
  22. # num_layer_lib = [3]
  23. lr_lib = [1E-3]
  24. for hidden_dim in hidden_dim_lib:
  25. for latent_dim in latent_dim_lib:
  26. for lr in lr_lib:
  27. model = AutoEncoder(state_dim=input_dim, hidden_dim=hidden_dim, latent_dim=latent_dim)
  28. TrainLoss, ValLoss = model.autoencoder_train(batch_size=batch_size, epochs=epochs, lr=lr,
  29. datax_train=X_train, datay_train=Y_train,
  30. datax_val=X_val, datay_val=Y_val)
  31. ModelFileName = f'./ModelLib/models/model_nlat_{latent_dim}_nhid_{hidden_dim}_lr_{lr}'
  32. torch.save(model, ModelFileName + '.pt')
  33. TrainLossFileName = f'./ModelLib/losses/trainloss_nlat_{latent_dim}_nhid_{hidden_dim}_lr_{lr}.csv'
  34. ValLossFileName = f'./ModelLib/losses/valloss_nlat_{latent_dim}_nhid_{hidden_dim}_lr_{lr}.csv'
  35. df_train = pd.DataFrame(TrainLoss)
  36. df_val = pd.DataFrame(ValLoss)
  37. df_train.to_csv(TrainLossFileName, index=False, header=False, sep=',')
  38. df_val.to_csv(ValLossFileName, index=False, header=False, sep=',')