Open ngl567 opened 5 years ago
在ptranse.cpp 中,有一些地方实在看不明白,希望麻烦解答下:
dScope=rand(0.0,normal(miu,miu,sigma));
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;
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
在ptranse.cpp 中,有一些地方实在看不明白,希望麻烦解答下:
dScope=rand(0.0,normal(miu,miu,sigma));
的作用是什么?整个randn()函数实现的是什么功能?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;
。不知道这个是不是我计算有问题,麻烦查看下,谢谢。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?