File size: 1,160 Bytes
f9c98cb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import torch
import numpy as np
import sys
def save_embed_npz(dataset, model_path, data_path, model_name):
sys.path.append('./' + str(model_path))
experiment_path = model_path / 'experiments' / (dataset + '_' + model_name) / 'best_model.pth'
save_path = data_path.parent / 'embed_model' / (dataset + '_' + model_name + '_embed.npz')
model = torch.load(experiment_path)
if model_name == 'ComplEx':
rel_embeddings = torch.sqrt(torch.square(model.rel_re_embeddings.weight.data) + torch.square(model.rel_im_embeddings.weight.data))
ent_embeddings = torch.sqrt(torch.square(model.ent_re_embeddings.weight.data) + torch.square(model.ent_im_embeddings.weight.data))
else:
rel_embeddings = model.rel_embeddings.weight.data
ent_embeddings = model.ent_embeddings.weight.data
eM = np.array(ent_embeddings.cpu())
rM = np.array(rel_embeddings.cpu())
if not save_path.parent.exists():
save_path.parent.mkdir()
np.savez(save_path, eM=eM, rM=rM)
print(model_name+' saved successfully!!!')
if __name__ == '__main__':
save_embed_npz('wordnet', 'TransE')
|