Search in sources :

Example 41 with IntDummyVector

use of com.tencent.angel.ml.math2.vector.IntDummyVector in project angel by Tencent.

the class SimpleBinaryOutAllExecutor method apply.

public static Vector apply(IntFloatVector v1, IntDummyVector v2, Binary op) {
    IntFloatVector res;
    if (v1.isDense()) {
        res = v1.copy();
        float[] resValues = res.getStorage().getValues();
        for (int i = 0; i < v1.getDim(); i++) {
            resValues[i] = op.apply(resValues[i], v2.get(i));
        }
    } else if (v1.isSparse()) {
        if (op.isKeepStorage()) {
            throw new AngelException("operation is not support!");
        } else {
            IntFloatVectorStorage newStorage = v1.getStorage().emptyDense();
            float[] resValues = newStorage.getValues();
            ObjectIterator<Int2FloatMap.Entry> iter1 = v1.getStorage().entryIterator();
            while (iter1.hasNext()) {
                Int2FloatMap.Entry entry = iter1.next();
                int idx = entry.getIntKey();
                resValues[idx] = entry.getFloatValue();
            }
            for (int i = 0; i < v1.getDim(); i++) {
                resValues[i] = op.apply(resValues[i], v2.get(i));
            }
            res = new IntFloatVector(v1.getMatrixId(), v1.getRowId(), v1.getClock(), v1.getDim(), newStorage);
        }
    } else {
        // sorted
        if (op.isKeepStorage()) {
            throw new AngelException("operation is not support!");
        } else {
            IntFloatVectorStorage newStorage = v1.getStorage().emptyDense();
            float[] resValues = newStorage.getValues();
            int[] v1Indices = v1.getStorage().getIndices();
            float[] v1Values = v1.getStorage().getValues();
            int size = v1.size();
            for (int i = 0; i < size; i++) {
                int idx = v1Indices[i];
                resValues[idx] = v1Values[i];
            }
            for (int i = 0; i < v1.getDim(); i++) {
                resValues[i] = op.apply(resValues[i], v2.get(i));
            }
            res = new IntFloatVector(v1.getMatrixId(), v1.getRowId(), v1.getClock(), v1.getDim(), newStorage);
        }
    }
    return res;
}
Also used : AngelException(com.tencent.angel.exception.AngelException) IntFloatVectorStorage(com.tencent.angel.ml.math2.storage.IntFloatVectorStorage) Int2FloatMap(it.unimi.dsi.fastutil.ints.Int2FloatMap) IntFloatVector(com.tencent.angel.ml.math2.vector.IntFloatVector) ObjectIterator(it.unimi.dsi.fastutil.objects.ObjectIterator)

Aggregations

IntDoubleVectorStorage (com.tencent.angel.ml.math2.storage.IntDoubleVectorStorage)26 IntFloatVectorStorage (com.tencent.angel.ml.math2.storage.IntFloatVectorStorage)26 IntIntVectorStorage (com.tencent.angel.ml.math2.storage.IntIntVectorStorage)26 IntLongVectorStorage (com.tencent.angel.ml.math2.storage.IntLongVectorStorage)26 LongDoubleVectorStorage (com.tencent.angel.ml.math2.storage.LongDoubleVectorStorage)24 LongFloatVectorStorage (com.tencent.angel.ml.math2.storage.LongFloatVectorStorage)24 LongIntVectorStorage (com.tencent.angel.ml.math2.storage.LongIntVectorStorage)24 LongLongVectorStorage (com.tencent.angel.ml.math2.storage.LongLongVectorStorage)24 Storage (com.tencent.angel.ml.math2.storage.Storage)24 ObjectIterator (it.unimi.dsi.fastutil.objects.ObjectIterator)18 IntDoubleSortedVectorStorage (com.tencent.angel.ml.math2.storage.IntDoubleSortedVectorStorage)16 IntDoubleSparseVectorStorage (com.tencent.angel.ml.math2.storage.IntDoubleSparseVectorStorage)16 IntFloatSortedVectorStorage (com.tencent.angel.ml.math2.storage.IntFloatSortedVectorStorage)16 IntFloatSparseVectorStorage (com.tencent.angel.ml.math2.storage.IntFloatSparseVectorStorage)16 IntIntSortedVectorStorage (com.tencent.angel.ml.math2.storage.IntIntSortedVectorStorage)16 IntIntSparseVectorStorage (com.tencent.angel.ml.math2.storage.IntIntSparseVectorStorage)16 IntLongSortedVectorStorage (com.tencent.angel.ml.math2.storage.IntLongSortedVectorStorage)16 IntLongSparseVectorStorage (com.tencent.angel.ml.math2.storage.IntLongSparseVectorStorage)16 LongDoubleSortedVectorStorage (com.tencent.angel.ml.math2.storage.LongDoubleSortedVectorStorage)16 LongDoubleSparseVectorStorage (com.tencent.angel.ml.math2.storage.LongDoubleSparseVectorStorage)16