@Override public Vector assign(Vector other) { if (size() != other.size()) { throw new CardinalityException(size(), other.size()); } values.clear(); for (Element e : other.nonZeroes()) { setQuick(e.index(), e.get()); } return this; }
@Test public void testIterator() { Iterator<Vector.Element> iterator = test.nonZeroes().iterator(); checkIterator(iterator, gold); iterator = test.all().iterator(); checkIterator(iterator, gold); double[] doubles = {0.0, 5.0, 0, 3.0}; RandomAccessSparseVector zeros = new RandomAccessSparseVector(doubles.length); for (int i = 0; i < doubles.length; i++) { zeros.setQuick(i, doubles[i]); } iterator = zeros.iterateNonZero(); checkIterator(iterator, doubles); iterator = zeros.iterator(); checkIterator(iterator, doubles); doubles = new double[]{0.0, 0.0, 0, 0.0}; zeros = new RandomAccessSparseVector(doubles.length); for (int i = 0; i < doubles.length; i++) { zeros.setQuick(i, doubles[i]); } iterator = zeros.iterateNonZero(); checkIterator(iterator, doubles); iterator = zeros.iterator(); checkIterator(iterator, doubles); }
Vector sequentialAccessLeft = new SequentialAccessSparseVector(3); Vector right = new DenseVector(3); randomAccessLeft.setQuick(0, 1); randomAccessLeft.setQuick(1, 2); randomAccessLeft.setQuick(2, 3); sequentialAccessLeft.setQuick(0,1); sequentialAccessLeft.setQuick(1,2); assertFalse(randomAccessLeft.equals(right)); randomAccessLeft = new RandomAccessSparseVector(2); randomAccessLeft.setQuick(0, 1); randomAccessLeft.setQuick(1, 2); assertFalse(randomAccessLeft.equals(right)); sparse.setQuick(0, 1); sparse.setQuick(1, 2); sparse.setQuick(2, 3); randomAccessLeft.setQuick(0, 1); randomAccessLeft.setQuick(1, 2); randomAccessLeft.setQuick(2, 3); assertEquals(randomAccessLeft, sparse); assertEquals(v1, v2); sparse = new RandomAccessSparseVector(2); sparse.setQuick(0, 1); sparse.setQuick(1, 2); assertEquals(v1, sparse);
@Override protected void reduce(IntWritable row, Iterable<DistributedRowMatrix.MatrixEntryWritable> values, Context context) throws IOException, InterruptedException { int size = context.getConfiguration().getInt(Keys.AFFINITY_DIMENSIONS, Integer.MAX_VALUE); RandomAccessSparseVector out = new RandomAccessSparseVector(size, 100); for (DistributedRowMatrix.MatrixEntryWritable element : values) { out.setQuick(element.getCol(), element.getVal()); if (log.isDebugEnabled()) { log.debug("(DEBUG - REDUCE) Row[{}], Column[{}], Value[{}]", row.get(), element.getCol(), element.getVal()); } } SequentialAccessSparseVector output = new SequentialAccessSparseVector(out); context.write(row, new VectorWritable(output)); } }
@Override protected void reduce(IntWritable row, Iterable<DistributedRowMatrix.MatrixEntryWritable> values, Context context) throws IOException, InterruptedException { int size = context.getConfiguration().getInt(Keys.AFFINITY_DIMENSIONS, Integer.MAX_VALUE); RandomAccessSparseVector out = new RandomAccessSparseVector(size, 100); for (DistributedRowMatrix.MatrixEntryWritable element : values) { out.setQuick(element.getCol(), element.getVal()); if (log.isDebugEnabled()) { log.debug("(DEBUG - REDUCE) Row[{}], Column[{}], Value[{}]", row.get(), element.getCol(), element.getVal()); } } SequentialAccessSparseVector output = new SequentialAccessSparseVector(out); context.write(row, new VectorWritable(output)); } }
@Override protected void reduce(IntWritable row, Iterable<DistributedRowMatrix.MatrixEntryWritable> values, Context context) throws IOException, InterruptedException { int size = context.getConfiguration().getInt(Keys.AFFINITY_DIMENSIONS, Integer.MAX_VALUE); RandomAccessSparseVector out = new RandomAccessSparseVector(size, 100); for (DistributedRowMatrix.MatrixEntryWritable element : values) { out.setQuick(element.getCol(), element.getVal()); if (log.isDebugEnabled()) { log.debug("(DEBUG - REDUCE) Row[{}], Column[{}], Value[{}]", row.get(), element.getCol(), element.getVal()); } } SequentialAccessSparseVector output = new SequentialAccessSparseVector(out); context.write(row, new VectorWritable(output)); } }
@Override protected void map(IntWritable r, VectorWritable v, Context ctx) throws IOException, InterruptedException { int row = r.get(); for (Vector.Element e : v.get().nonZeroes()) { RandomAccessSparseVector tmp = new RandomAccessSparseVector(newNumCols, 1); tmp.setQuick(row, e.get()); r.set(e.index()); ctx.write(r, new VectorWritable(tmp)); } } }
@Override protected void map(IntWritable r, VectorWritable v, Context ctx) throws IOException, InterruptedException { int row = r.get(); for (Vector.Element e : v.get().nonZeroes()) { RandomAccessSparseVector tmp = new RandomAccessSparseVector(Integer.MAX_VALUE, 1); tmp.setQuick(row, e.get()); r.set(e.index()); ctx.write(r, new VectorWritable(tmp)); } } }
@Override protected void map(IntWritable r, VectorWritable v, Context ctx) throws IOException, InterruptedException { int row = r.get(); for (Vector.Element e : v.get().nonZeroes()) { RandomAccessSparseVector tmp = new RandomAccessSparseVector(newNumCols, 1); tmp.setQuick(row, e.get()); r.set(e.index()); ctx.write(r, new VectorWritable(tmp)); } } }
@Override public Vector assign(Vector other) { if (size() != other.size()) { throw new CardinalityException(size(), other.size()); } values.clear(); Iterator<Element> it = other.iterateNonZero(); Element e; while (it.hasNext() && (e = it.next()) != null) { setQuick(e.index(), e.get()); } return this; }
@Override public void map(IntWritable r, VectorWritable v, OutputCollector<IntWritable, VectorWritable> out, Reporter reporter) throws IOException { int row = r.get(); for (Vector.Element e : v.get().nonZeroes()) { RandomAccessSparseVector tmp = new RandomAccessSparseVector(newNumCols, 1); tmp.setQuick(row, e.get()); r.set(e.index()); out.collect(r, new VectorWritable(tmp)); } } }
@Override protected void map(IntWritable row, VectorWritable vectorWritable, Context ctx) throws IOException, InterruptedException { Vector sampledRowVector = sampleDown(vectorWritable.get(), ctx); Vector rowVector = similarity.normalize(sampledRowVector); int numNonZeroEntries = 0; double maxValue = Double.MIN_VALUE; for (Vector.Element element : rowVector.nonZeroes()) { RandomAccessSparseVector partialColumnVector = new RandomAccessSparseVector(Integer.MAX_VALUE); partialColumnVector.setQuick(row.get(), element.get()); ctx.write(new IntWritable(element.index()), new VectorWritable(partialColumnVector)); numNonZeroEntries++; if (maxValue < element.get()) { maxValue = element.get(); } } if (threshold != NO_THRESHOLD) { nonZeroEntries.setQuick(row.get(), numNonZeroEntries); maxValues.setQuick(row.get(), maxValue); } norms.setQuick(row.get(), similarity.norm(rowVector)); ctx.getCounter(Counters.ROWS).increment(1); }
@Override protected void map(IntWritable row, VectorWritable vectorWritable, Context ctx) throws IOException, InterruptedException { Vector sampledRowVector = sampleDown(vectorWritable.get(), ctx); Vector rowVector = similarity.normalize(sampledRowVector); int numNonZeroEntries = 0; double maxValue = Double.MIN_VALUE; for (Vector.Element element : rowVector.nonZeroes()) { RandomAccessSparseVector partialColumnVector = new RandomAccessSparseVector(Integer.MAX_VALUE); partialColumnVector.setQuick(row.get(), element.get()); ctx.write(new IntWritable(element.index()), new VectorWritable(partialColumnVector)); numNonZeroEntries++; if (maxValue < element.get()) { maxValue = element.get(); } } if (threshold != NO_THRESHOLD) { nonZeroEntries.setQuick(row.get(), numNonZeroEntries); maxValues.setQuick(row.get(), maxValue); } norms.setQuick(row.get(), similarity.norm(rowVector)); ctx.getCounter(Counters.ROWS).increment(1); }
@Override protected void map(IntWritable row, VectorWritable vectorWritable, Context ctx) throws IOException, InterruptedException { Vector sampledRowVector = sampleDown(vectorWritable.get(), ctx); Vector rowVector = similarity.normalize(sampledRowVector); int numNonZeroEntries = 0; double maxValue = Double.MIN_VALUE; for (Vector.Element element : rowVector.nonZeroes()) { RandomAccessSparseVector partialColumnVector = new RandomAccessSparseVector(Integer.MAX_VALUE); partialColumnVector.setQuick(row.get(), element.get()); ctx.write(new IntWritable(element.index()), new VectorWritable(partialColumnVector)); numNonZeroEntries++; if (maxValue < element.get()) { maxValue = element.get(); } } if (threshold != NO_THRESHOLD) { nonZeroEntries.setQuick(row.get(), numNonZeroEntries); maxValues.setQuick(row.get(), maxValue); } norms.setQuick(row.get(), similarity.norm(rowVector)); ctx.getCounter(Counters.ROWS).increment(1); }
@Override public Vector assign(Vector other) { if (size() != other.size()) { throw new CardinalityException(size(), other.size()); } values.clear(); for (Element e : other.nonZeroes()) { setQuick(e.index(), e.get()); } return this; }
@Test public void testIterator() { Iterator<Vector.Element> iterator = test.iterateNonZero(); checkIterator(iterator, gold); iterator = test.iterator(); checkIterator(iterator, gold); double[] doubles = {0.0, 5.0, 0, 3.0}; RandomAccessSparseVector zeros = new RandomAccessSparseVector(doubles.length); for (int i = 0; i < doubles.length; i++) { zeros.setQuick(i, doubles[i]); } iterator = zeros.iterateNonZero(); checkIterator(iterator, doubles); iterator = zeros.iterator(); checkIterator(iterator, doubles); doubles = new double[]{0.0, 0.0, 0, 0.0}; zeros = new RandomAccessSparseVector(doubles.length); for (int i = 0; i < doubles.length; i++) { zeros.setQuick(i, doubles[i]); } iterator = zeros.iterateNonZero(); checkIterator(iterator, doubles); iterator = zeros.iterator(); checkIterator(iterator, doubles); }
double value = ip.getQuick(i); if (value > threshold) { sparseIp.setQuick(i, value);
double value = ip.getQuick(i); if (value > threshold) { sparseIp.setQuick(i, value);
double value = ip.getQuick(i); if (value > threshold) { sparseIp.setQuick(i, value);