def test_crystal_model_v2(self): cg = CrystalGraph() s = Structure(Lattice.cubic(3), ['Si'], [[0, 0, 0]]) with ScratchDir('.'): model = MEGNetModel(nfeat_edge=None, nfeat_global=2, nblocks=1, lr=1e-2, n1=4, n2=4, n3=4, npass=1, ntarget=1, graph_converter=cg, centers=np.linspace(0, 4, 10), width=0.5) model = model.train([s, s], [0.1, 0.1], epochs=2) t = model.predict_structure(s) self.assertTrue(t.shape == (1, ))
test_structures = structures[80:] train_targets = targets[:80] test_targets = targets[80:] from megnet.models import MEGNetModel from megnet.data.graph import GaussianDistance from megnet.data.crystal import CrystalGraph from megnet.utils.preprocessing import StandardScaler import numpy as np gc = CrystalGraph(bond_converter=GaussianDistance(np.linspace(0, 5, 100), 0.5), cutoff=4) model = MEGNetModel(100, 2, graph_converter=gc, lr=1e-3) INTENSIVE = False # U0 is an extensive quantity scaler = StandardScaler.from_training_data(train_structures, train_targets, is_intensive=INTENSIVE) model.target_scaler = scaler model.train(train_structures, train_targets, epochs=500, verbose=2) predicted_tests = [] for i in test_structures: predicted_tests.append(model.predict_structure(i).ravel()[0]) print(type(test_targets), type(predicted_tests)) for i in range(10): print(test_targets[i], predicted_tests[i])