package DeepLearning; import java.util.Random; import java.util.List; import java.util.ArrayList; public class Dropout { public int N; public int n_in; public int[] hidden_layer_sizes; public int n_out; public int n_layers; public HiddenLayer[] hiddenLayers; public LogisticRegression logisticLayer; public Random rng; public Dropout(int N, int n_in, int[] hidden_layer_sizes, int n_out, Random rng, String activation) { this.N = N; this.n_in = n_in; this.hidden_layer_sizes = hidden_layer_sizes; this.n_layers = hidden_layer_sizes.length; this.n_out = n_out; this.hiddenLayers = new HiddenLayer[n_layers]; if (rng == null) rng = new Random(1234); this.rng = rng; if (activation == null) activation = "ReLU"; // construct multi-layer int input_size; for(int i=0; i dropout_masks; List layer_inputs; double[] layer_input; double[] layer_output = new double[0]; for(int epoch=0; epoch(n_layers); layer_inputs = new ArrayList<>(n_layers+1); // +1 for logistic layer // forward hiddenLayers for(int i=0; i=0; i--) { if(i == n_layers-1) { prev_W = logisticLayer.W; } else { prev_dy = dy.clone(); prev_W = hiddenLayers[i+1].W; } if(dropout) { for(int j=0; j