Package org.jblas

Examples of org.jblas.DoubleMatrix


        return ret;
    }
   
  @Override
  public void reconstruct(double[] x, double[] reconstruct_x) {
    DoubleMatrix x_m = new DoubleMatrix(x).transpose();
      DoubleMatrix ret = reconstruct(x_m);
      for(int i = 0; i < n_visible; i++) {
        reconstruct_x[i] = ret.get(0, i);
      }
  }
View Full Code Here


      //w
      if((null != _w) && (null != _w[i])) {
        w[i] = _w[i].dup();
      }
      else {
        w[i] = new DoubleMatrix(curr_out, curr_in);
              for (int j = 0; j < curr_out; j++) {
                  for (int k = 0; k < curr_in; k++) {
                    w[i].put(j, k, rand.nextGaussian() * 0.01);
                  }
              }
      }
     
      //b
      if((null != _b) && (null != _b[i])) {
        b[i] = _b[i].dup();
      }
      else {
        b[i] = new DoubleMatrix(curr_out);
        for (int j = 0; j < curr_out; j++) {
          b[i].put(j, 0, rand.nextGaussian() * 0.01);
        }
      }
    }
 
View Full Code Here

        public RBMOptimizer(SGDTrainConfig config, DoubleMatrix samples, int n_visible, int n_hidden, DoubleMatrix w,
                DoubleMatrix hbias, DoubleMatrix vbias) {
            super(config, samples, n_visible, n_hidden, w, hbias, vbias);
            v1_sample = my_samples;
            h1_probability = new DoubleMatrix(nbr_sample, n_hidden);
            h1_sample = new DoubleMatrix(nbr_sample, n_hidden);
            v2_probability = new DoubleMatrix(nbr_sample, n_visible);
            v2_sample = new DoubleMatrix(nbr_sample, n_visible);
            h2_probability = new DoubleMatrix(nbr_sample, n_hidden);
            //h2_sample = new DoubleMatrix(nbr_sample, n_hidden);
        }
View Full Code Here

          }
          else {
            sample_h_given_v(v2_sample, h2_probability, null, my_w, my_hbias);
          }
         
          DoubleMatrix delta_w = null;
          DoubleMatrix delta_hbias = null;
          DoubleMatrix delta_vbias = null;
         
          if(myConfig.isUseHintonCD1()) {
            delta_w = h1_probability.transpose().mmul(v1_sample).subi(h2_probability.transpose().mmul(v2_probability));
            delta_hbias = h1_probability.sub(h2_probability).columnSums().divi(nbr_sample);
            delta_vbias = v1_sample.sub(v2_probability).columnSums().divi(nbr_sample);
          }
          else {
            delta_w = h1_sample.transpose().mmul(v1_sample).subi(h2_probability.transpose().mmul(v2_sample));
            delta_hbias = h1_sample.sub(h2_probability).columnSums().divi(nbr_sample);
            delta_vbias = v1_sample.sub(v2_sample).columnSums().divi(nbr_sample);
          }

            if (myConfig.isUseRegularization()) {
        //only L2 for RBM
        if (0 != myConfig.getLamada2()) {
          delta_w.subi(my_w.mul(myConfig.getLamada2()));
                }
      }
            delta_w.divi(nbr_sample);
           
            int idx = 0;
            for (int i = 0; i < n_hidden; i++) {
                for (int j = 0; j < n_visible; j++) {
                    arg[idx++] = delta_w.get(i, j);
                }
            }
            for (int i = 0; i < n_hidden; i++) {
                arg[idx++] = delta_hbias.get(0, i);
            }
            for (int i = 0; i < n_visible; i++) {
                arg[idx++] = delta_vbias.get(0, i);
            }
        }
View Full Code Here

    super(_n_in, _n_out, _w, _b);
  }

  @Override
  public DoubleMatrix reconstruct(DoubleMatrix input) {
    DoubleMatrix ret = input.mmul(hlparam.w.transpose()).addiRowVector(hlparam.hbias);
        MathUtil.sigmod(ret);
        ret = ret.mmul(hlparam.w).addiRowVector(hlparam.vbias);
        MathUtil.sigmod(ret);
        return ret;
  }
View Full Code Here

   * Hidden layer output
   * @param input
   * @return
   */
  public final DoubleMatrix hidden_output(DoubleMatrix input) {
    DoubleMatrix ret = input.mmul(bpparam.w[0].transpose()).addiRowVector(bpparam.b[0]);
    MathUtil.sigmod(ret);
    return ret;
  }
View Full Code Here

        return ret;
  }

  @Override
  public void reconstruct(double[] x, double[] reconstruct_x) {
    DoubleMatrix x_m = new DoubleMatrix(x).transpose();
      DoubleMatrix ret = reconstruct(x_m);
      for(int i = 0; i < n_visible; i++) {
        reconstruct_x[i] = ret.get(0, i);
      }
  }
View Full Code Here

    MathUtil.sigmod(ret);
    return ret;
  }
 
  public void hidden_output(double[] x, double[] hidden_layer) {
    DoubleMatrix x_m = new DoubleMatrix(x).transpose();
      DoubleMatrix ret = hidden_output(x_m);
      for(int i = 0; i < n_hiddens[0]; i++) {
        hidden_layer[i] = ret.get(0, i);
      }
  }
View Full Code Here

  }

  @Override
  protected void gradientUpdateMiniBatch(SGDTrainConfig config, DoubleMatrix x_samples, DoubleMatrix y_samples, SGDParam curr_param) {
      int nbr_sample = x_samples.rows;
      DoubleMatrix curr_w = ((HiddenLayerParam)curr_param).w;
      DoubleMatrix curr_hbias = ((HiddenLayerParam)curr_param).hbias;
      DoubleMatrix curr_vbias = ((HiddenLayerParam)curr_param).vbias;
       
        /**
         * reconstruct
         */
      DoubleMatrix tilde_x = null;
        DoubleMatrix y = null;
        DoubleMatrix z = null;
      if (config.isDoCorruption()) {
            double p = 1 - config.getCorruption_level();
            tilde_x = get_corrupted_input(x_samples, p);
            y = tilde_x.mmul(curr_w.transpose()).addiRowVector(curr_hbias);
        }
      else {
        y = x_samples.mmul(curr_w.transpose()).addiRowVector(curr_hbias);
      }
      MathUtil.sigmod(y);
        z = y.mmul(curr_w).addiRowVector(curr_vbias);
        MathUtil.sigmod(z);
       
        /**
         * gradient update
         */
        DoubleMatrix L_vbias = x_samples.sub(z);
        DoubleMatrix L_hbias = L_vbias.mmul(curr_w.transpose()).muli(y).muli(y.neg().addi(1));
        DoubleMatrix delta_w = null;
        if (config.isDoCorruption()) {
            delta_w = L_hbias.transpose().mmul(tilde_x).addi(y.transpose().mmul(L_vbias));
        } else {
            delta_w = L_hbias.transpose().mmul(x_samples).addi(y.transpose().mmul(L_vbias));
        }
        if (config.isUseRegularization()) {
      //only L2 for autoencoder
      if (0 != config.getLamada2()) {
        delta_w.subi(curr_w.mul(config.getLamada2()));
            }
    }
        delta_w.divi(nbr_sample);
        DoubleMatrix delta_hbias = L_hbias.columnSums().divi(nbr_sample);
        DoubleMatrix delta_vbias = L_vbias.columnSums().divi(nbr_sample);
       
        curr_w.addi(delta_w.muli(config.getLearningRate()));
        curr_hbias.addi(delta_hbias.transpose().muli(config.getLearningRate()));
        curr_vbias.addi(delta_vbias.transpose().muli(config.getLearningRate()));
   
  }
View Full Code Here

    return false;
  }
 
  @Override
  protected double loss(List<SampleVector> samples) {
    DoubleMatrix x_samples = MathUtil.convertX2Matrix(samples);
        DoubleMatrix reconstruct_x = reconstruct(x_samples);
    return MatrixFunctions.powi(reconstruct_x.sub(x_samples), 2).sum();
  }
View Full Code Here

TOP

Related Classes of org.jblas.DoubleMatrix

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.