|
|
|
@ -310,7 +310,7 @@ real Trainer::checkGradient() {
|
|
|
|
|
std::vector<Argument> outArgs;
|
|
|
|
|
|
|
|
|
|
trainerInternal_.getGradientMachine()->forward(inArgs, &outArgs, PASS_GC);
|
|
|
|
|
real cost = Argument::sumCosts(outArgs);
|
|
|
|
|
real cost = Argument::sum(outArgs);
|
|
|
|
|
LOG(INFO) << "original cost=" << cost;
|
|
|
|
|
trainerInternal_.getGradientMachine()->backward();
|
|
|
|
|
|
|
|
|
@ -340,7 +340,7 @@ real Trainer::checkGradient() {
|
|
|
|
|
parameter->getBuf(PARAMETER_VALUE)->copyFrom(newPara);
|
|
|
|
|
parameter->setValueUpdated();
|
|
|
|
|
trainerInternal_.getGradientMachine()->forward(inArgs, &outArgs, PASS_GC);
|
|
|
|
|
real newCost1 = Argument::sumCosts(outArgs);
|
|
|
|
|
real newCost1 = Argument::sum(outArgs);
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < dim; ++i) {
|
|
|
|
|
newp[i] = oldp[i] - step * d[i];
|
|
|
|
@ -349,7 +349,7 @@ real Trainer::checkGradient() {
|
|
|
|
|
parameter->getBuf(PARAMETER_VALUE)->copyFrom(newPara);
|
|
|
|
|
parameter->setValueUpdated();
|
|
|
|
|
trainerInternal_.getGradientMachine()->forward(inArgs, &outArgs, PASS_GC);
|
|
|
|
|
real newCost2 = Argument::sumCosts(outArgs);
|
|
|
|
|
real newCost2 = Argument::sum(outArgs);
|
|
|
|
|
|
|
|
|
|
real trueDelta = 0.5 * (newCost1 - newCost2);
|
|
|
|
|
real diff = (1e-20 + trueDelta) / (1e-20 + delta) - 1;
|
|
|
|
@ -575,7 +575,7 @@ real Trainer::calcGradient(const DataBatch& dataBatch,
|
|
|
|
|
|
|
|
|
|
trainerInternal_.getGradientMachine()->forwardBackward(
|
|
|
|
|
inArgs, &outArgs, PASS_TRAIN);
|
|
|
|
|
real cost = Argument::sumCosts(outArgs);
|
|
|
|
|
real cost = Argument::sum(outArgs);
|
|
|
|
|
|
|
|
|
|
offset = 0;
|
|
|
|
|
for (auto& para : parameters) {
|
|
|
|
|