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.