@Override public Vector viewPart(int offset, int length) { if (offset < 0) { throw new IndexException(offset, size); } if (offset + length > size) { throw new IndexException(offset + length, size); } return new VectorView(this, offset, length); }
@Override public VectorView like() { return new VectorView(vector.like(), offset, size()); }
@Override public String toString() { int row = 0; int maxRowsToDisplay = 10; int maxColsToDisplay = 20; int colsToDisplay = maxColsToDisplay; if(maxColsToDisplay > columnSize()){ colsToDisplay = columnSize(); } StringBuilder s = new StringBuilder("{\n"); Iterator<MatrixSlice> it = iterator(); while ((it.hasNext()) && (row < maxRowsToDisplay)) { MatrixSlice next = it.next(); s.append(" ").append(next.index()) .append(" =>\t") .append(new VectorView(next.vector(), 0, colsToDisplay)) .append('\n'); row ++; } String returnString = s.toString(); if (maxColsToDisplay <= columnSize()) { returnString = returnString.replace("}", " ... } "); } if(maxRowsToDisplay <= rowSize()) return returnString + ("... }"); else{ return returnString + ("}"); } }
@Override public String toString() { int row = 0; int maxRowsToDisplay = 10; int maxColsToDisplay = 20; int colsToDisplay = maxColsToDisplay; if(maxColsToDisplay > columnSize()){ colsToDisplay = columnSize(); } StringBuilder s = new StringBuilder("{\n"); for (MatrixSlice next : this.transpose()) { if (row < maxRowsToDisplay) { s.append(" ") .append(next.index()) .append(" =>\t") .append(new VectorView(next.vector(), 0, colsToDisplay)) .append('\n'); row++; } } String returnString = s.toString(); if (maxColsToDisplay <= columnSize()) { returnString = returnString.replace("}", " ... }"); } if (maxRowsToDisplay <= rowSize()) { return returnString + "... }"; } else { return returnString + "}"; } }
@Test public void testVectorView() { RandomAccessSparseVector vec1 = new RandomAccessSparseVector(3); RandomAccessSparseVector vec2 = new RandomAccessSparseVector(6); SequentialAccessSparseVector vec3 = new SequentialAccessSparseVector(3); SequentialAccessSparseVector vec4 = new SequentialAccessSparseVector(6); Vector vecV1 = new VectorView(vec1, 0, 3); Vector vecV2 = new VectorView(vec2, 2, 3); Vector vecV3 = new VectorView(vec3, 0, 3); Vector vecV4 = new VectorView(vec4, 2, 3); doTestVectors(vecV1, vecV2); doTestVectors(vecV3, vecV4); }
@Override public Vector viewPart(int offset, int length) { if (offset < 0) { throw new IndexException(offset, size()); } if (offset + length > size()) { throw new IndexException(offset + length, size()); } return new VectorView(vector, offset + this.offset, length); }
@Test @Repeat(iterations = 20) public void testViewSequentialAccessSparseVectorWritable() throws Exception { Vector v = new SequentialAccessSparseVector(MAX_VECTOR_SIZE); createRandom(v); Vector view = new VectorView(v, 0, v.size()); doTestVectorWritableEquals(view); }
@Test public void testIterator() throws Exception { VectorView view = new VectorView(new DenseVector(values), OFFSET, CARDINALITY); double[] gold = {1.1, 2.2, 3.3}; Iterator<Vector.Element> iter = view.iterator(); checkIterator(iter, gold); iter = view.iterateNonZero(); checkIterator(iter, gold); view = new VectorView(new DenseVector(values), 0, CARDINALITY); gold = new double[]{0.0, 1.1, 2.2}; iter = view.iterator(); checkIterator(iter, gold); gold = new double[]{1.1, 2.2}; iter = view.iterateNonZero(); checkIterator(iter, gold); }
@Test public void testEnumeration() { double[] apriori = {0, 1, 2, 3, 4}; doTestEnumeration(apriori, new VectorView(new DenseVector(new double[]{ -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), 2, 5)); doTestEnumeration(apriori, new DenseVector(new double[]{0, 1, 2, 3, 4})); Vector sparse = new RandomAccessSparseVector(5); sparse.set(0, 0); sparse.set(1, 1); sparse.set(2, 2); sparse.set(3, 3); sparse.set(4, 4); doTestEnumeration(apriori, sparse); sparse = new SequentialAccessSparseVector(5); sparse.set(0, 0); sparse.set(1, 1); sparse.set(2, 2); sparse.set(3, 3); sparse.set(4, 4); doTestEnumeration(apriori, sparse); }
/** * return the weights by given class k. * @param k * @return */ public Vector getWeightsForClass(int k){ int start = (this.numFeatures+1)*k; int length = this.numFeatures + 1; return new VectorView(this.weightVector,start,length); }
/** * * @return weights , no bias */ public Vector getWeightsWithoutBias(){ int length = this.numFeatures; return new VectorView(this.weightVector,1,length); }
assertEquals(randomAccessLeft, sparse); Vector v1 = new VectorView(randomAccessLeft, 0, 2); Vector v2 = new VectorView(right, 0, 2); assertEquals(v1, v2); sparse = new RandomAccessSparseVector(2);
/** * * @return weights for all label pairs. */ public Vector getAllLabelPairWeights() { return new VectorView(this.weightVector, numWeightsForFeatures, numWeightsForLabels); }
/** * * @param k class index * @return weights for class k, including bias at the beginning */ public Vector getWeightsForClass(int k){ if (k>=numClasses){ throw new IllegalArgumentException("out of bound"); } int start = (this.numFeatures+1)*k; int length = this.numFeatures +1; return new VectorView(this.weightVector,start,length); }
@Override public Vector viewPart(int offset, int length) { if (offset < 0) { throw new IndexException(offset, size); } if (offset + length > size) { throw new IndexException(offset + length, size); } return new VectorView(this, offset, length); }
@Override public Vector viewPart(int offset, int length) { if (offset < 0) { throw new IndexException(offset, size); } if (offset + length > size) { throw new IndexException(offset + length, size); } return new VectorView(this, offset, length); }
@Override public Vector viewPart(int offset, int length) { if (offset < 0) { throw new IndexException(offset, size()); } if (offset + length > size()) { throw new IndexException(offset + length, size()); } return new VectorView(vector, offset + this.offset, length); }
@Override public Vector viewPart(int offset, int length) { if (offset < 0) { throw new IndexException(offset, size()); } if (offset + length > size()) { throw new IndexException(offset + length, size()); } return new VectorView(this, offset, length); }
@Override public Vector viewRow(int row) { if (row < 0 || row >= rowSize()) { throw new IndexException(row, rowSize()); } return new VectorView(matrix.viewRow(row + offset[ROW]), offset[COL], columnSize()); }
@Test @Repeat(iterations = 20) public void testViewSequentialAccessSparseVectorWritable() throws Exception { Vector v = new SequentialAccessSparseVector(MAX_VECTOR_SIZE); createRandom(v); Vector view = new VectorView(v, 0, v.size()); doTestVectorWritableEquals(view); }