Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make ANI NNP flexible #98

Open
chrisiacovella opened this issue Apr 9, 2024 · 0 comments
Open

Make ANI NNP flexible #98

chrisiacovella opened this issue Apr 9, 2024 · 0 comments
Labels
enhancement New feature or request

Comments

@chrisiacovella
Copy link
Member

Right now, if we try to train a dataset with the ANI-2x NNP, we will be limited to the 7 atomic species in the original implementation (H, C, O, N, F, S, Cl).

Copy and pasting from issue #96:

@wiederm wrote:

The ANI architecture is unique. Each element-specific neural network only considers atoms with its specific element --- therefore adding a new element requires the careful construction of a balanced dataset. There is no 'transfer' learning like with other architectures (e.g., SchNet), in which each neural network layer is trained on each atom, and the element information is passed with the environment representation through the network.

ANI-2x has been developed for a specific set of elements (H, C, O, N, S, F, and Cl), and we shouldn't add additional elements using the ANI-2x naming (the only difference between ANI-1x and ANI-2x is the number of elements). Since each new element adds a new multilayer perception, the number of parameters that need to be trained increases significantly.

Having said all of this, I think it is worth adding a Phosphorus atomic network, and we might want to think about an element embedding instead of element-specific neural networks. But we can't call this ANI-2x.

Changing the number of elements will of course change things, but since our goal is to not necessarily just retrain ANI-2x but use the same approach with different datasets, we probably need to have this dynamically identify which elements and generate the atomic_network element for each element found. This of course could be problematic with too many atomic species (in terms of speed of training), but again if our goal is to compare different potential approaches with otherwise matching data, this might be necessary.

Anyway, this is something we will need to discuss in more detail later.

@chrisiacovella chrisiacovella added the enhancement New feature or request label Apr 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant