cb1c66f | Muammar El Khatib | 05 April 2019, 22:37:51 UTC | LBFGS instead of FullBatchLBFGS. | 05 April 2019, 22:37:51 UTC |
13f1cf1 | Muammar El Khatib | 05 April 2019, 21:33:46 UTC | LBFGS by default. It might be still slow but converges in less time. | 05 April 2019, 21:33:46 UTC |
0058dce | Muammar El Khatib | 05 April 2019, 05:15:56 UTC | autoencoder module is doing distributed training! | 05 April 2019, 05:15:56 UTC |
b8828c1 | Muammar El Khatib | 04 April 2019, 18:42:33 UTC | Read log function and improved parity plot. | 04 April 2019, 18:42:33 UTC |
dbb7de0 | Muammar El Khatib | 04 April 2019, 17:09:35 UTC | Improved parity function. | 04 April 2019, 17:09:35 UTC |
be813c7 | Muammar El Khatib | 04 April 2019, 05:22:57 UTC | Remove loss function plot from neuralnetwork.py and PEP8 cleaning. | 04 April 2019, 05:22:57 UTC |
26d61a2 | Muammar El Khatib | 03 April 2019, 05:07:19 UTC | From delayed to futures. | 03 April 2019, 05:07:19 UTC |
0c9913a | Muammar El Khatib | 02 April 2019, 23:05:12 UTC | Small refactoring. | 02 April 2019, 23:05:12 UTC |
a28036e | Muammar El Khatib | 02 April 2019, 22:49:53 UTC | batch_size keyword argument to do distributed training. | 02 April 2019, 22:49:53 UTC |
ecbc40f | Muammar El Khatib | 02 April 2019, 03:06:28 UTC | A step forward distributed training. | 02 April 2019, 03:06:28 UTC |
741b618 | Muammar El Khatib | 01 April 2019, 21:56:41 UTC | Renamed RMSELoss to MSELoss. Moved RMSE per atom and per image out of the loss.py module. I think it is better to keep things isolated at that level. | 01 April 2019, 21:56:41 UTC |
7e105ad | Muammar El Khatib | 31 March 2019, 17:35:53 UTC | Logger is working correctly. | 31 March 2019, 17:35:53 UTC |
6a16cff | Muammar El Khatib | 31 March 2019, 06:17:51 UTC | Moved from print to logging. | 31 March 2019, 06:17:51 UTC |
8b9e97f | Muammar El Khatib | 29 March 2019, 23:28:56 UTC | fingerprints/ modules moved to logging instead of print. | 29 March 2019, 23:28:56 UTC |
3fbde9d | Muammar El Khatib | 28 March 2019, 22:06:38 UTC | Merge branch 'master' of https://github.com/muammar/mlchem * 'master' of https://github.com/muammar/mlchem: Added m2r module Update environment.yml | 28 March 2019, 22:06:38 UTC |
e260e62 | Muammar El Khatib | 28 March 2019, 21:04:17 UTC | This fixes memory leakage when saving the loss to a list. | 28 March 2019, 21:04:17 UTC |
9446cfe | Muammar El Khatib | 28 March 2019, 16:54:55 UTC | Potentials.save now does not require features - `features` is a keyword argument used to not require them to save models. - More PEP8 and Pyflakes cleaning up. - Renamed examples. | 28 March 2019, 16:54:55 UTC |
2fc1cfd | Muammar El Khatib | 27 March 2019, 23:25:23 UTC | The save() method in Potentials() is now a static method This will make easier to use that function to save models without instantiating the Potentials class. That is particularly useful when a user would like to build models in a more flexible way. | 27 March 2019, 23:25:23 UTC |
5666c99 | Muammar El Khatib | 27 March 2019, 03:48:16 UTC | Now fingerprints can be passed to the autoencoder as targets. | 27 March 2019, 03:48:16 UTC |
8490ef9 | Muammar El Khatib | 26 March 2019, 22:53:30 UTC | More information about time for moving data to GPU. | 26 March 2019, 22:53:30 UTC |
6aca4b5 | Muammar El Khatib | 26 March 2019, 22:47:24 UTC | The Potentials() class can use GPU. That is the case when using pytorch and the NeuralNetwork class. Users have to use `device='cuda'` in the .train() function. | 26 March 2019, 22:47:24 UTC |
22c12dd | Muammar El Khatib | 26 March 2019, 21:24:26 UTC | Added m2r module | 26 March 2019, 21:24:26 UTC |
3558765 | Muammar El Khatib | 26 March 2019, 21:13:05 UTC | More work with AutoEncoder - The following variables are returned by the train() class: epoch, _loss, _rmse. - Removed unused .mlchem, .params, and .scaler files. - Improved autoencoder test to use latent space to traing using the Potentials() class. | 26 March 2019, 21:13:05 UTC |
6308e02 | Muammar El Khatib | 26 March 2019, 21:10:50 UTC | Update environment.yml This possibly will make readthedocs works again. | 26 March 2019, 21:10:50 UTC |
160d430 | Muammar El Khatib | 26 March 2019, 16:55:01 UTC | A new get_latent_space() method that returns latent space. This method class takes the input, and returns a latent space in the format needed by mlchem to train subsequent models. This is almost ready for deployment. | 26 March 2019, 16:56:10 UTC |
b354553 | Muammar El Khatib | 25 March 2019, 22:52:14 UTC | MSELoss with 'mean' reduction. From pytorch: 'mean': the sum of the output will be divided by the number of elements in the output. This is exactly what it is mentioned about Loss Functions for real-valued outputs with AutoEncoders. The loss has to be divided by the number of elements in the output. With this change, I can reduce RMSE between outputs and targets as low as 5e-3. | 25 March 2019, 22:52:14 UTC |
a427143 | Muammar El Khatib | 25 March 2019, 21:42:58 UTC | No activation function in output layer for fully connected AutoEncoder According to https://youtu.be/xTU79Zs4XKY?t=416, when reconstructing a real valued vector, then the output layer does not need an activation function. Indeed, I can confirm this is correct. By doing this change, I am able to reconstruct atom positions without that much effort. | 25 March 2019, 21:42:58 UTC |
c479877 | Muammar El Khatib | 25 March 2019, 20:49:05 UTC | AutoEncoder class is operational and new Cartesian class The vanilla AutoEncoder() seems to be working. I also created a Cartesian() class to return images with right data structure to operate with MLChem using Cartesian coordinates as features. That is useful for the AutoEncoder hypothesis I want to try. | 25 March 2019, 20:49:05 UTC |
1805d06 | Muammar El Khatib | 25 March 2019, 17:07:03 UTC | Encoder/Decoder neural networks are built correctly. Users have to input a very simple dictionary with this structure: >>> hiddenlayers = {'encoder': (10, 5), 'decoder': (5, 10)} | 25 March 2019, 17:07:03 UTC |
517edf3 | Muammar El Khatib | 25 March 2019, 05:28:38 UTC | Encoder part has been implemented. | 25 March 2019, 05:28:38 UTC |
09e025f | Muammar El Khatib | 24 March 2019, 05:18:06 UTC | Merge branch 'master' into autoencoders * master: Small code refactoring. Kernel Ridge Regression predictions are working. | 24 March 2019, 05:18:06 UTC |
a3457bb | Muammar El Khatib | 24 March 2019, 05:17:31 UTC | Small code refactoring. | 24 March 2019, 05:17:31 UTC |
b87b64d | Muammar El Khatib | 22 March 2019, 23:34:24 UTC | Kernel Ridge Regression predictions are working. | 22 March 2019, 23:34:24 UTC |
fb04f46 | Muammar El Khatib | 21 March 2019, 21:20:18 UTC | Merge branch 'master' into autoencoders * master: KRR parameters and weights are saved to file. | 21 March 2019, 21:20:18 UTC |
25dcec5 | Muammar El Khatib | 21 March 2019, 21:19:08 UTC | KRR parameters and weights are saved to file. | 21 March 2019, 21:19:08 UTC |
d491271 | Muammar El Khatib | 21 March 2019, 18:15:50 UTC | Merge branch 'master' into autoencoders * master: Improved header. Update __init__.py | 21 March 2019, 18:15:50 UTC |
e206a99 | Muammar El Khatib | 21 March 2019, 18:15:14 UTC | Improved header. | 21 March 2019, 18:15:14 UTC |
ffc29b3 | Muammar El Khatib | 21 March 2019, 18:14:10 UTC | Update __init__.py | 21 March 2019, 18:14:10 UTC |
51fb692 | Muammar El Khatib | 21 March 2019, 18:07:25 UTC | Input for the autoencoder is built. Next step would be to think about the friendliest way to provide this workflow to users. | 21 March 2019, 18:07:25 UTC |
cffd708 | Muammar El Khatib | 21 March 2019, 05:51:30 UTC | Starting addition of autoencoder class. | 21 March 2019, 05:51:30 UTC |
f9d1c7a | Muammar El Khatib | 21 March 2019, 03:48:01 UTC | Computing kernel functions in chunks A new function called `get_chunks()` was added, and it can be used in the KernelRidge class by passing the `batch_size` keyword argument. This might be particularly useful when the size of the calculations does not fit in memory. | 21 March 2019, 03:53:12 UTC |
8b8cd91 | Muammar El Khatib | 19 March 2019, 23:55:23 UTC | Cleaned up examples and added more logging messages to kernelridge. | 19 March 2019, 23:55:23 UTC |
7dd739d | Muammar El Khatib | 19 March 2019, 05:36:57 UTC | Merge branch 'master' of https://github.com/muammar/mlchemistry * 'master' of https://github.com/muammar/mlchemistry: Update README.md | 19 March 2019, 05:36:57 UTC |
9df50a6 | Muammar El Khatib | 19 March 2019, 05:36:38 UTC | Cleaned up examples. | 19 March 2019, 05:36:38 UTC |
9e00326 | Muammar El Khatib | 19 March 2019, 05:27:31 UTC | Update README.md | 19 March 2019, 05:27:31 UTC |
82ed0e0 | Muammar El Khatib | 19 March 2019, 05:20:39 UTC | Improved README and removed entry from doctstring in serialization. | 19 March 2019, 05:20:39 UTC |
32dfd18 | Muammar El Khatib | 19 March 2019, 05:09:52 UTC | Serialization now possible with msgpack. - After researching about how to serialze some of the calculations to avoid recomputing them, I found that msgpack seems pretty solid. I added a new serialization module. - I cleaned up docstrings of KernelRidge regression. - Updated requirements.txt. | 19 March 2019, 05:09:52 UTC |
5af2166 | Muammar El Khatib | 18 March 2019, 20:37:18 UTC | n_workers and threads_per_worker have to be passed to Cluster class. See https://stackoverflow.com/q/55229249/1995261. | 18 March 2019, 20:37:18 UTC |
ffed6cb | Muammar El Khatib | 18 March 2019, 16:46:41 UTC | Scheduler type has to be present. I changed this in the way that you can set your scheduler in the class that is being built. | 18 March 2019, 16:46:41 UTC |
79af12e | Muammar El Khatib | 18 March 2019, 07:12:21 UTC | Removed `scheduler` and `cores` arguments. It seems to me that dask is smart enough to take care of all when you pass to the Client() class the `n_workers` and `threads_per_worker`. | 18 March 2019, 07:12:21 UTC |
a1cb0a8 | Muammar El Khatib | 18 March 2019, 03:49:45 UTC | Model training was corrected. - There is no need to loop over atoms when doing the atomic decomposition anzats. - PEP8 cleaned code. - There is more information about the training process. | 18 March 2019, 03:49:45 UTC |
2bf4423 | Muammar El Khatib | 17 March 2019, 18:51:06 UTC | I cleaned up docstrings. | 17 March 2019, 18:51:06 UTC |
e5521a5 | Muammar El Khatib | 17 March 2019, 18:39:02 UTC | The KernelRidge class can train. - The building of the kernel matrix is parallelized with dask. - Code is PEP8 and Pyflakes clean. - This commit advances issue #7. | 17 March 2019, 18:40:19 UTC |
fe03f01 | Muammar El Khatib | 16 March 2019, 19:01:28 UTC | LT matrix for the atomic decomposition ansatz. | 16 March 2019, 19:01:28 UTC |
29c41d0 | Muammar El Khatib | 15 March 2019, 23:10:30 UTC | The prepare_model function is computing the atomic kernel matrices. | 15 March 2019, 23:10:30 UTC |
db2a216 | Muammar El Khatib | 15 March 2019, 16:48:27 UTC | Ignore dask-worker-space directories. | 15 March 2019, 16:48:27 UTC |
f119e4f | Muammar El Khatib | 15 March 2019, 07:01:19 UTC | Fixed forgotten import of convert_elapsed_time function. | 15 March 2019, 07:01:19 UTC |
8dc2b22 | Muammar El Khatib | 15 March 2019, 06:56:17 UTC | More steps forward to get KRR working - The Gaussian fingerprint can return the right data structure to compute kernels. - A new convert_elapsed_time function to convert seconds to H:M:S. - I added some kernel functions to kernelridge.py. - Now the examples are divided in krrpot and neuralnetpot. | 15 March 2019, 06:56:17 UTC |
72ac349 | Muammar El Khatib | 15 March 2019, 05:12:19 UTC | Starting kernel ridge regression implementation. | 15 March 2019, 05:12:19 UTC |
bbbf4e5 | Muammar El Khatib | 14 March 2019, 17:27:13 UTC | I added more comments to my code. Commenting is good. | 14 March 2019, 17:27:13 UTC |
1697ea4 | Muammar El Khatib | 14 March 2019, 05:54:17 UTC | Using m2r to show markdown from files. | 14 March 2019, 05:54:17 UTC |
b7ed484 | Muammar El Khatib | 14 March 2019, 02:04:53 UTC | No travis deployement for the time being. I will self host and figure it out later. | 14 March 2019, 02:04:53 UTC |
11f2403 | Muammar El Khatib | 13 March 2019, 23:49:39 UTC | I created a gh-pages branch to see if travis can make it. | 13 March 2019, 23:49:39 UTC |
a3feec5 | Muammar El Khatib | 13 March 2019, 23:33:31 UTC | Last try before and starting to think that I just will host these at home >:( | 13 March 2019, 23:33:31 UTC |
9f9e4c5 | Muammar El Khatib | 13 March 2019, 23:29:16 UTC | I added sphinx.ext.githubpages to hopefully resolve the issue with the deployment >:( | 13 March 2019, 23:29:16 UTC |
45cb65f | Muammar El Khatib | 13 March 2019, 23:19:28 UTC | Attempt to fix deploy and CNAME removed for the moments. | 13 March 2019, 23:19:28 UTC |
60759c8 | Muammar El Khatib | 13 March 2019, 23:10:39 UTC | Delete extra CNAME file. | 13 March 2019, 23:10:39 UTC |
768f95a | Muammar El Khatib | 13 March 2019, 23:10:20 UTC | Merge branch 'master' of https://github.com/muammar/mlchem * 'master' of https://github.com/muammar/mlchem: Create CNAME | 13 March 2019, 23:10:20 UTC |
04c5024 | Muammar El Khatib | 13 March 2019, 23:09:53 UTC | Added cname and new pip dependency. | 13 March 2019, 23:09:53 UTC |
8abe234 | Muammar El Khatib | 13 March 2019, 23:03:33 UTC | Create CNAME | 13 March 2019, 23:03:33 UTC |
9626c72 | Muammar El Khatib | 13 March 2019, 22:58:19 UTC | Fixing some other errors. | 13 March 2019, 22:58:19 UTC |
2c27b1e | Muammar El Khatib | 13 March 2019, 22:53:29 UTC | Inspired by: https://amarder.github.io/using-travis-ci-to-build-sphinx-docs/ | 13 March 2019, 22:53:29 UTC |
4b0135a | Muammar El Khatib | 13 March 2019, 22:45:24 UTC | Modifying .travis.yml to build pages there. | 13 March 2019, 22:45:24 UTC |
dfb6a51 | Muammar El Khatib | 13 March 2019, 18:49:59 UTC | Nested loop parallelized for computing atomic feature vectors. - mlchem/fingerprints/gaussian.py changed according to https://stackoverflow.com/q/55091935/1995261. - pep8 and pyflakes cleaning. | 13 March 2019, 18:49:59 UTC |
fa0468b | Muammar El Khatib | 13 March 2019, 05:51:08 UTC | I got rid of the backend stuff for the moments. | 13 March 2019, 05:51:08 UTC |
458dc83 | Muammar El Khatib | 11 March 2019, 21:22:59 UTC | Updated readme and cu_training.py example. | 11 March 2019, 21:22:59 UTC |
cbe8b7f | Muammar El Khatib | 10 March 2019, 07:30:21 UTC | Update README.md | 10 March 2019, 07:30:21 UTC |
64a2779 | Muammar El Khatib | 10 March 2019, 07:27:13 UTC | I added in _static a dask dashboard example. | 10 March 2019, 07:27:13 UTC |
e284112 | Muammar El Khatib | 10 March 2019, 07:16:27 UTC | Fingerprinting is almost completely parallelized. - I have implemented parallelization of the whole fingerprinting process. - It is possible to track the whole computing process using the dask dashboard at http://localhost:8787/status. Note that you need to install bokeh. | 10 March 2019, 07:16:27 UTC |
41ce07d | Muammar El Khatib | 10 March 2019, 06:05:40 UTC | More improvements to make this work with dask for parallelization. | 10 March 2019, 06:05:40 UTC |
c4ab997 | Muammar El Khatib | 10 March 2019, 05:37:18 UTC | Moving dask from processes to distributed. The fingerprinting needed minimal change. However, note that the input file has changed now to have a `if __name__ == '__main__'` protection. I have to think better how to refactor the code to make this differently. But things have to keep going. | 10 March 2019, 05:37:18 UTC |
e56fb0f | Muammar El Khatib | 08 March 2019, 04:45:58 UTC | Merge branch 'master' of https://github.com/muammar/mlchemistry * 'master' of https://github.com/muammar/mlchemistry: Update README.md Removed space. Skip the tests for the moments. Update README.md Update .travis.yml Update .travis.yml Update python to 3.7. I will not support 2. Update .travis.yml Update .travis.yml Create .travis.yml | 08 March 2019, 04:45:58 UTC |
c1bad5c | Muammar El Khatib | 08 March 2019, 00:47:21 UTC | Update README.md | 08 March 2019, 00:47:21 UTC |
24c308c | Muammar El Khatib | 08 March 2019, 00:41:06 UTC | Removed space. | 08 March 2019, 00:41:06 UTC |
655c987 | Muammar El Khatib | 08 March 2019, 00:38:10 UTC | Skip the tests for the moments. | 08 March 2019, 00:38:10 UTC |
07185e8 | Muammar El Khatib | 08 March 2019, 00:37:28 UTC | Update README.md | 08 March 2019, 00:37:28 UTC |
6923a14 | Muammar El Khatib | 08 March 2019, 00:31:10 UTC | Update .travis.yml | 08 March 2019, 00:31:10 UTC |
5d4ba54 | Muammar El Khatib | 08 March 2019, 00:30:39 UTC | Update .travis.yml | 08 March 2019, 00:30:39 UTC |
aa44fca | Muammar El Khatib | 08 March 2019, 00:29:08 UTC | Update python to 3.7. I will not support 2. | 08 March 2019, 00:29:08 UTC |
44335b3 | Muammar El Khatib | 08 March 2019, 00:22:57 UTC | Update .travis.yml Change the position of --progress-bar off . | 08 March 2019, 00:22:57 UTC |
869c571 | Muammar El Khatib | 08 March 2019, 00:20:59 UTC | Update .travis.yml | 08 March 2019, 00:20:59 UTC |
9fccd1c | Muammar El Khatib | 08 March 2019, 00:10:42 UTC | Create .travis.yml | 08 March 2019, 00:10:42 UTC |
2ad62c2 | Muammar El Khatib | 06 March 2019, 23:09:26 UTC | Moving matplotlib to be installed with conda. | 06 March 2019, 23:09:26 UTC |
3bf1617 | Muammar El Khatib | 06 March 2019, 22:34:13 UTC | New keyword argument `cores` to Gaussian fingerprint - Now it is possible to specify the number of cores used in the fingerprinting process. I think the best way of keeping things modular is that each fingerprinting class accepts a `cores` keyword argument instead of using the Potentials() class. - I added a timer to the fingerprint process. | 06 March 2019, 22:35:31 UTC |
b03eb12 | Muammar El Khatib | 06 March 2019, 03:26:42 UTC | Parallel fingerprinting powered by dask! I am so impressed with how easy it was to make a parallel loop with dask. This commit is making the fingerprinting much faster. | 06 March 2019, 03:28:49 UTC |
8e48887 | Muammar El Khatib | 01 March 2019, 00:46:27 UTC | Models can be saved/loaded. This commit makes it possible to train a model, and save its state_dict. Then at loading time one can recreate the neural network and do predictions. There are three files created and needed: 1. Model file: .mlchem. 2. Parameters for neural network class and fingerprints: .params 3. Scaler object: .scaler. I think the scaler object file is something I can get rid of later. But for the moments it is the easiest way of scaling features using sklearn. | 01 March 2019, 00:46:27 UTC |
ee5041d | Muammar El Khatib | 28 February 2019, 04:14:55 UTC | Small refactoring. I modified forward() which is now using getattr() to get the slope and intercept. This was a suggestion from @chenglu at discuss.pytorch.org | 28 February 2019, 04:14:55 UTC |
233aaa6 | Muammar El Khatib | 27 February 2019, 04:28:01 UTC | This is making the model to load correctly. After discussing in discuss.pytorch.org with @ptrblck this commit registers the custom variables needed to reconstruct the model. However, I realized that loading the model and predicting the data points in the training set is not working. It seems that the state dictionary that is dumped is not the optimized one? | 27 February 2019, 04:28:01 UTC |
7519f21 | Muammar El Khatib | 27 February 2019, 00:38:47 UTC | Deep copy of the model. | 27 February 2019, 00:38:47 UTC |
9b2416e | Muammar El Khatib | 26 February 2019, 23:43:53 UTC | More steps forward to load pytorch models. The only remaining problem to be solved has to do with RuntimeError: Error(s) in loading state_dict for NeuralNetwork. | 26 February 2019, 23:43:53 UTC |