in main.py [0:0]
def compute_poincare_maps(features, labels, fout,
mode='features', k_neighbours=15,
distlocal='minkowski', sigma=1.0, gamma=2.0,
epochs = 300,
color_dict=None, debugplot=False,
batchsize=-1, lr=0.1, burnin=500, lrm=1.0, earlystop=0.0001, cuda=0):
RFA = compute_rfa(features, mode=mode,
k_neighbours=k_neighbours,
distlocal= distlocal,
distfn='MFIsym',
connected=True,
sigma=sigma)
if batchsize < 0:
batchsize = min(512, int(len(RFA)/10))
print('batchsize = ', batchsize)
lr = batchsize / 16 * lr
indices = torch.arange(len(RFA))
if cuda:
indices = indices.cuda()
RFA = RFA.cuda()
dataset = TensorDataset(indices, RFA)
# instantiate our Embedding predictor
predictor = PoincareEmbedding(len(dataset), 2,
dist=PoincareDistance,
max_norm=1,
Qdist='laplace',
lossfn = 'klSym',
gamma=gamma,
cuda=cuda)
t_start = timeit.default_timer()
optimizer = RiemannianSGD(predictor.parameters(), lr=lr)
opt = PoincareOptions(debugplot=debugplot, batchsize=batchsize, lr=lr,
burnin=burnin, lrm=lrm, earlystop=earlystop, cuda=cuda, epochs=epochs)
# train predictor
print('Starting training...')
embeddings, loss, epoch = train(predictor,
dataset,
optimizer,
opt,
fout=fout,
labels=labels,
earlystop=earlystop,
color_dict=color_dict)
np.savetxt(fout + '.csv', embeddings, delimiter=",")
t = timeit.default_timer() - t_start
titlename = f"loss = {loss:.3e}\ntime = {t/60:.3f} min"
print(titlename)
return embeddings, titlename