@Override public Matrix newInstance(int rows, int cols) { return new DiagonalMatrix(rows); } }
/** * @param rowcol * @param d * @return a matrix with d in the diagonal */ public static DiagonalMatrix fill(int rowcol, double d) { DiagonalMatrix ret = new DiagonalMatrix(rowcol); for (int i = 0; i < rowcol; i++) { ret.vals[i] = d; } return ret; }
@Override public Matrix predict(Matrix x) { Matrix xt = MatlibMatrixUtils.transpose(x); final Matrix mult = MatlibMatrixUtils.dotProduct(MatlibMatrixUtils.dotProduct(MatlibMatrixUtils.transpose(u), xt),this.w); if(this.biasMode) MatlibMatrixUtils.plusInplace(mult,this.bias); Matrix ydiag = new DiagonalMatrix(mult); return ydiag; } }
/** * @param adj the adjanceny matrix should be square and symmetric * @return the laplacian */ public SparseMatrix laplacian(SparseMatrix adj){ DiagonalMatrix degree = new DiagonalMatrix(adj.rowCount()); int i = 0; for (Vector row : adj.rows()) { // row.put(i, 0); degree.put(i, i, row.sum()); i++; } return laplacian(adj,degree); }
private void initParams(Matrix x, Matrix y, int xrows, int xcols, int ycols) { final InitStrategy wstrat = getInitStrat(BilinearLearnerParameters.WINITSTRAT,x,y); final InitStrategy ustrat = getInitStrat(BilinearLearnerParameters.UINITSTRAT,x,y); this.w = wstrat.init(xrows, ycols); this.u = ustrat.init(xcols, ycols); this.bias = SparseMatrix.sparse(ycols,ycols); if(this.biasMode){ final InitStrategy bstrat = getInitStrat(BilinearLearnerParameters.BIASINITSTRAT,x,y); this.bias = bstrat.init(ycols, ycols); this.diagX = new DiagonalMatrix(ycols,1); } }