use of org.apache.ignite.ml.math.Vector in project ignite by apache.
the class VectorIterableTest method nonZeroesTestBasic.
/**
*/
@Test
public void nonZeroesTestBasic() {
final int size = 5;
final double[] nonZeroesOddData = new double[size], nonZeroesEvenData = new double[size];
for (int idx = 0; idx < size; idx++) {
final boolean odd = (idx & 1) == 1;
nonZeroesOddData[idx] = odd ? 1 : 0;
nonZeroesEvenData[idx] = odd ? 0 : 1;
}
assertTrue("Arrays failed to initialize.", !isZero(nonZeroesEvenData[0]) && isZero(nonZeroesEvenData[1]) && isZero(nonZeroesOddData[0]) && !isZero(nonZeroesOddData[1]));
final Vector nonZeroesEvenVec = new DenseLocalOnHeapVector(nonZeroesEvenData), nonZeroesOddVec = new DenseLocalOnHeapVector(nonZeroesOddData);
assertTrue("Vectors failed to initialize.", !isZero(nonZeroesEvenVec.getElement(0).get()) && isZero(nonZeroesEvenVec.getElement(1).get()) && isZero(nonZeroesOddVec.getElement(0).get()) && !isZero(nonZeroesOddVec.getElement(1).get()));
assertTrue("Iterator(s) failed to start.", nonZeroesEvenVec.nonZeroes().iterator().next() != null && nonZeroesOddVec.nonZeroes().iterator().next() != null);
int nonZeroesActual = 0;
for (Vector.Element e : nonZeroesEvenVec.nonZeroes()) {
final int idx = e.index();
final boolean odd = (idx & 1) == 1;
final double val = e.get();
assertTrue("Not an even index " + idx + ", for value " + val, !odd);
assertTrue("Zero value " + val + " at even index " + idx, !isZero(val));
nonZeroesActual++;
}
final int nonZeroesOddExp = (size + 1) / 2;
assertEquals("Unexpected num of iterated odd non-zeroes.", nonZeroesOddExp, nonZeroesActual);
assertEquals("Unexpected nonZeroElements of odd.", nonZeroesOddExp, nonZeroesEvenVec.nonZeroElements());
nonZeroesActual = 0;
for (Vector.Element e : nonZeroesOddVec.nonZeroes()) {
final int idx = e.index();
final boolean odd = (idx & 1) == 1;
final double val = e.get();
assertTrue("Not an odd index " + idx + ", for value " + val, odd);
assertTrue("Zero value " + val + " at even index " + idx, !isZero(val));
nonZeroesActual++;
}
final int nonZeroesEvenExp = size / 2;
assertEquals("Unexpected num of iterated even non-zeroes", nonZeroesEvenExp, nonZeroesActual);
assertEquals("Unexpected nonZeroElements of even", nonZeroesEvenExp, nonZeroesOddVec.nonZeroElements());
}
use of org.apache.ignite.ml.math.Vector in project ignite by apache.
the class VectorNormTest method dotTest.
/**
*/
@Test
public void dotTest() {
consumeSampleVectors((v, desc) -> {
// IMPL NOTE this initialises vector
new VectorImplementationsTest.ElementsChecker(v, desc);
final int size = v.size();
final Vector v1 = new DenseLocalOnHeapVector(size);
invertValues(v, v1);
final double actual = v.dot(v1);
double exp = 0;
for (Vector.Element e : v.all()) exp += e.get() * v1.get(e.index());
final VectorImplementationsTest.Metric metric = new VectorImplementationsTest.Metric(exp, actual);
assertTrue("Dot product not close enough at " + desc + ", " + metric, metric.closeEnough());
});
}
use of org.apache.ignite.ml.math.Vector in project ignite by apache.
the class VectorToMatrixTest method testCross.
/**
*/
@Test
public void testCross() {
consumeSampleVectors((v, desc) -> {
if (!availableForTesting(v))
return;
fillWithNonZeroes(v);
for (int delta : new int[] { -1, 0, 1 }) {
final int size2 = v.size() + delta;
if (size2 < 1)
return;
final Vector v2 = new DenseLocalOnHeapVector(size2);
for (Vector.Element e : v2.all()) e.set(size2 - e.index());
assertCross(v, v2, desc);
}
});
}
use of org.apache.ignite.ml.math.Vector in project ignite by apache.
the class VectorViewTest method testCopy.
/**
*/
@Test
public void testCopy() throws Exception {
Vector cp = testVector.copy();
assertTrue(MathTestConstants.VAL_NOT_EQUALS, cp.equals(testVector));
}
use of org.apache.ignite.ml.math.Vector in project ignite by apache.
the class MnistDistributed method asLabeledVector.
/**
* Transform vector created by {@link MnistUtils} to {@link LabeledVector}.
*
* @param v Vector to transform.
* @param featsCnt Count of features.
* @return Vector created by {@link MnistUtils} transformed to {@link LabeledVector}.
*/
private static LabeledVector<Vector, Vector> asLabeledVector(Vector v, int featsCnt) {
Vector features = VectorUtils.copyPart(v, 0, featsCnt);
Vector lb = VectorUtils.num2Vec((int) v.get(featsCnt), 10);
return new LabeledVector<>(features, lb);
}
Aggregations