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