Made the number of samples per neuron configurable

This commit is contained in:
emeric
2019-11-29 13:37:41 +01:00
parent 85129d4a40
commit 93cd3b6020
4 changed files with 17 additions and 13 deletions
@@ -156,7 +156,7 @@ FeaturesSearcher::FeaturesSearcher(Database::Session& session,
for (auto& sample : samples)
dataNormalizer.normalizeData(sample);
SOM::Coordinate size {static_cast<SOM::Coordinate>(std::sqrt(samples.size() / 4))};
SOM::Coordinate size {static_cast<SOM::Coordinate>(std::sqrt(samples.size() / trainSettings.sampleCountPerNeuron))};
LMS_LOG(SIMILARITY, INFO) << "Found " << samples.size() << " tracks, constructing a " << size << "*" << size << " network";
SOM::Network network {size, size, nbDimensions};
@@ -170,7 +170,7 @@ FeaturesSearcher::FeaturesSearcher(Database::Session& session,
}};
LMS_LOG(SIMILARITY, DEBUG) << "Training network...";
network.train(samples, trainSettings.nbIterations, progressIndicator, stopRequested);
network.train(samples, trainSettings.iterationCount, progressIndicator, stopRequested);
LMS_LOG(SIMILARITY, DEBUG) << "Training network DONE";
if (stopRequested && stopRequested())
@@ -50,7 +50,8 @@ class FeaturesSearcher
// Use training (may be very slow)
struct TrainSettings
{
std::size_t nbIterations {10};
std::size_t iterationCount {10};
float sampleCountPerNeuron {4};
FeatureSettingsMap featureSettingsMap;
};
FeaturesSearcher(Database::Session& session, const TrainSettings& trainSettings, StopRequestedFunction stopRequested = {});