GerbenBeintema / deepSI

Dynamical System Identification using python incorporating numerous powerful deep learning methods. (deepSI = deep System Identification)
Other
43 stars 16 forks source link

Neural network model as argument (SS_Encoder) #8

Closed Enderdead closed 1 year ago

Enderdead commented 1 year ago

Hello,

First of all, I would like to thank you for the toolbox.

For my personal research, I need to tune the hyperparameters of the SS Encoder method. I fork the repo to do so (by adding argument) but it's not an ideal situation for replicability.

I am uncertain whether the repository maintainers would be willing to consider adding more customization options for the non-linear function of the model. However, I strongly believe that this would be an important feature for achieving optimal performance through hyperparameter optimization.

In my company's toolbox, we typically pass the neural network object as an argument to the system's constructor. I wonder if this approach would also be appropriate and effective in the context of this project. By incorporating the neural network object as a parameter in the system's constructor, it may become easier to customize and optimize the network's performance for specific use cases, ultimately leading to better outcomes. I welcome any feedback or discussion on this topic.

(disclaimer: I come from the ML community which explains my concern here )

Best regards

GerbenBeintema commented 1 year ago

Hi Enderdead,

Nice to see that you are using the toolbox and seeing improvements.

Currently SS_encoder is made to be the minimal implementation (but very fast) of the SUBNET structure.

However, SS_encoder_general is made to be as general as possible. For instance, as part of the arguments you can pass in the network structure you desire and replace the state-transition function f_net, output-function h_net and even the encoder e_net. Here it is important to keep the first few arguments the same as in the base case, for instance, the f_net need to have nx as the first argument and nu as the second argument.

See 2.2 Creating your own encoder structure from example 2 for details on how to implement your structure.

Is this what you are looking for?

Best, Gerben