package org.ea.javacnn.layers;
import org.ea.javacnn.data.BackPropResult;
import org.ea.javacnn.data.DataBlock;
import org.ea.javacnn.data.OutputDefinition;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* Neurons in a fully connected layer have full connections to all
* activations in the previous layer, as seen in regular Neural Networks.
* Their activations can hence be computed with a matrix multiplication
* followed by a bias offset.
*
* @author Daniel Persson (mailto.woden@gmail.com)
*/
public class FullyConnectedLayer implements Layer,Serializable {
private double l1_decay_mul = 0.0;
private double l2_decay_mul = 1.0;
private DataBlock in_act;
private DataBlock out_act;
private final float BIAS_PREF = 0.0f;
private int out_depth, out_sx, out_sy;
private int num_inputs;
private List filters;
private DataBlock biases;
public FullyConnectedLayer(OutputDefinition def, int num_neurons) {
this.out_depth = num_neurons;
// computed
this.num_inputs = def.getOutX() * def.getOutY() * def.getDepth();
this.out_sx = 1;
this.out_sy = 1;
// initializations
float bias = BIAS_PREF;
this.filters = new ArrayList();
for(int i=0;i getBackPropagationResult() {
List results = new ArrayList();
for(int i=0;i
Ads help maintain this website.