thunlp / Fast-TransX

An Efficient implementation of TransE and its extended models for Knowledge Representation Learning
MIT License
402 stars 108 forks source link

请教Fast-PTransE代码中的一些问题 #45

Open ngl567 opened 5 years ago

ngl567 commented 5 years ago

在ptranse.cpp 中,有一些地方实在看不明白,希望麻烦解答下:

  1. 在randn函数中,dScope=rand(0.0,normal(miu,miu,sigma));的作用是什么?整个randn()函数实现的是什么功能?
  2. 在gradient_path()函数中,relationVec[r1* dimension + ii]+=belta*ptranseAlpha*x;我在算梯度时感觉应该是relationVec[r1 * dimension + ii]-=belta*ptranseAlpha*x;同样,relationVec[j * dimension + i]-=belta*ptranseAlpha*x;我觉得应该是relationVec[j * dimension + ii]+=belta*ptranseAlpha*x;。不知道这个是不是我计算有问题,麻烦查看下,谢谢。
  3. pransetrainMode() 函数中,if (randd(id) % 1000 < pr)表示什么意思?pr_path = 0.99*pr_path + 0.01;为什么要做这个操作?train_path(trainList[i]->r, j, relPath, 2*margin, pr*pr_path);中为什么要用2*margin而不是margin?