|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "Optimiser.h" |
|
|
|
using namespace Moses; |
|
using namespace std; |
|
|
|
namespace Mira |
|
{ |
|
|
|
size_t Perceptron::updateWeightsHopeFear( |
|
ScoreComponentCollection& weightUpdate, |
|
const vector< vector<ScoreComponentCollection> >& featureValuesHope, |
|
const vector< vector<ScoreComponentCollection> >& featureValuesFear, |
|
const vector< vector<float> >& dummy1, |
|
const vector< vector<float> >& dummy2, |
|
const vector< vector<float> >& dummy3, |
|
const vector< vector<float> >& dummy4, |
|
float perceptron_learning_rate, |
|
size_t rank, |
|
size_t epoch, |
|
int updatePosition) |
|
{ |
|
cerr << "Rank " << rank << ", epoch " << epoch << ", hope: " << featureValuesHope[0][0] << endl; |
|
cerr << "Rank " << rank << ", epoch " << epoch << ", fear: " << featureValuesFear[0][0] << endl; |
|
ScoreComponentCollection featureValueDiff = featureValuesHope[0][0]; |
|
featureValueDiff.MinusEquals(featureValuesFear[0][0]); |
|
cerr << "Rank " << rank << ", epoch " << epoch << ", hope - fear: " << featureValueDiff << endl; |
|
featureValueDiff.MultiplyEquals(perceptron_learning_rate); |
|
weightUpdate.PlusEquals(featureValueDiff); |
|
cerr << "Rank " << rank << ", epoch " << epoch << ", update: " << featureValueDiff << endl; |
|
return 0; |
|
} |
|
|
|
} |
|
|
|
|