Ejemplo n.º 1
0
	void train(const TableView<VectorXf>& samples, const TableView<double>& values) override {
		featuresNumber = samples.columnsNumber();
		weights = VectorXf::Zero(featuresNumber);

		double learning_rate = base_learning_rate;
		for (int iteration = 0; iteration < iterationNumber; ++iteration) {
			auto sampleIt = samples.begin();
			auto valueIt = values.begin();

			while (sampleIt != samples.end() && valueIt != values.end()) {
				const VectorXf& sample = *sampleIt;
				double value = *valueIt;
				weights -= learning_rate * 2 * (weights.dot(sample) - value) * sample;
				++sampleIt;
				++valueIt;
			}
			learning_rate *= decay;
		}
	}