import java.util.Random; public class DBN { public int N; public int n_ins; public int[] hidden_layer_sizes; public int n_outs; public int n_layers; public HiddenLayer[] sigmoid_layers; public RBM[] rbm_layers; public LogisticRegression log_layer; public Random rng; public static double sigmoid(double x) { return 1.0 / (1.0 + Math.pow(Math.E, -x)); } public DBN(int N, int n_ins, int[] hidden_layer_sizes, int n_outs, int n_layers, Random rng) { int input_size; this.N = N; this.n_ins = n_ins; this.hidden_layer_sizes = hidden_layer_sizes; this.n_outs = n_outs; this.n_layers = n_layers; this.sigmoid_layers = new HiddenLayer[n_layers]; this.rbm_layers = new RBM[n_layers]; if(rng == null) this.rng = new Random(1234); else this.rng = rng; // construct multi-layer for(int i=0; i