Bot releases are visible (Hide)
Full Changelog: https://github.com/pycroscopy/atomai/compare/v0.7.4...v0.7.8
Published by ziatdinovmax over 2 years ago
Minor fixes and improvements
stat.multivar.update_classes()
that didn't allow specifying custom window sizePublished by ziatdinovmax about 3 years ago
Example of using an ensemble of DKL models:
# Initialize and train ensemble of models
dklgp = aoi.models.dklGPR(indim=X_train.shape[-1], embedim=2)
dklgp.fit_ensemble(X_train, y_train, n_models=5, training_cycles=1500, lr=0.01)
# Make a prediction
y_samples = dklgp.sample_from_posterior(X_test, num_samples=1000) # n_models x n_samples x n_data
y_pred = y_samples.mean(axis=(0,1)) # average over model and sample dimensions
y_var = y_samples.var(axis=(0,1))
Example of using a built-in Thompson sampler for active learning:
for e in range(exploration_steps):
# obtain/update DKL-GP posterior
dklgp = aoi.models.dklGPR(data_dim, embedim=2, precision="single")
dklgp.fit(X_train, y_train, training_cycles=50)
# Thompson sampling for selecting the next measurement/evaluation point
obj, next_point = dklgp.thompson(X_cand)
# Perform a 'measurement'
y_measured = measure(next_point)
# Update measured and candidate points, etc...
Published by ziatdinovmax over 3 years ago
Bug fixes and additional utility functions for image and spectral data processing
Published by ziatdinovmax over 3 years ago
Minor release to patch some numerical stability issues with DKL-GP
Published by ziatdinovmax over 3 years ago
The DKL-GP is based on this paper and can be used for predicting a functional property (or properties) from structural data such as images. Example of usage:
# Structural image data
n, d1, d2 = imgstack.shape
x_train = imgstack.reshape(n, d1*d2)
# Property
y_train = P[:, 0] # can be a scalar or vector variable
# Input data dims
data_dim = x_train.shape[-1]
# Initialize model
dklgp = aoi.models.dklGPR(data_dim)
# Train
dklgp.fit(
x_train y_train, # inputs and outputs
training_cycles=100, precision="single", lr=1e-2 # training parameters
)
# Make a prediction (with quantified uncertainty) with the trained model
mean, var = dklgp.predict(x_new)
For more details, see the example notebook
One can now load pre-trained models for atomic feature finding in graphene and BFO-like systems. Currently limited to STEM data. Example of usage:
# Load model for atom finding in graphene, which was trained on simulated data
model = aoi.models.load_pretrained_model("G_MD")
# Apply to your data
nn_out, coords = model.predict(new_data)
As with any machine learning model, there is a caveat that the performance of pre-trained models will likely degrade significantly on the out-of-distribution data (different feature size, presence of objects on the surface not accounted for in the simulations, etc.)
Published by ziatdinovmax over 3 years ago
atomai.utils.dataset
module with experimental datasets for scientific machine learningPublished by ziatdinovmax over 3 years ago
# We are going to start with a constant learning rate, then after 600 iterations we begin
# linearly decreasing it over the next 200 iterations, and keep constant afterwards
lr_t = np.ones(800) * 1e-3
lr_t[600:800] = np.linspace(1e-3, 1e-4, 200)
model.fit(images, labels, images_test, labels_test, # training data
training_cycles=1000, compute_accuracy=True, # basic training parameters
swa=True, lr_scheduler=lr_t # advanced training parameters
)
Published by ziatdinovmax over 3 years ago
Published by ziatdinovmax over 3 years ago
Published by ziatdinovmax almost 4 years ago
Published by ziatdinovmax almost 4 years ago
To install and use the old code run pip install git+https://github.com/ziatdinovmax/atomai@legacy --upgrade
The new version provides an easy, Keras-like interface for training and applying models for semantic segmentation, image-to-spectrum conversion, as well as different forms of variational autoencoders. For example, to train a model for semantic segmentation of data, (for atom/defect finding) simply run:
model = Segmentor()
model.fit(X, y, X_test, y_test, training_cycles=300)
To make a prediction with a trained model, run:
output, coords = model.predict(expdata)
See the updated documentation for more details.
Published by ziatdinovmax about 4 years ago
New functionalities:
Bug fixes/improvements: