train method

void train(
  1. List<Vector> samples
)

Train the coarse quantizer on samples. Must be called once before add. samples should be representative of the data distribution and contain at least nlist vectors.

Implementation

void train(List<Vector> samples) {
  if (samples.length < nlist) {
    throw StateError(
      'IvfFlatIndex.train: need at least nlist=$nlist samples, got '
      '${samples.length}',
    );
  }
  final buf = Float32List(samples.length * dim);
  for (var i = 0; i < samples.length; i++) {
    if (samples[i].dim != dim) {
      throw StateError(
        'IvfFlatIndex.train: sample $i dim ${samples[i].dim} != $dim',
      );
    }
    buf.setRange(i * dim, (i + 1) * dim, samples[i].values);
  }
  _quantizer.train(buf);
  _trained = true;
}