All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.deeplearning4j.arbiter.layers.OCNNLayerSpace Maven / Gradle / Ivy

There is a newer version: 1.0.0-beta7
Show newest version
package org.deeplearning4j.arbiter.layers;

import lombok.AccessLevel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.deeplearning4j.arbiter.optimize.api.ParameterSpace;
import org.deeplearning4j.arbiter.optimize.parameter.FixedValue;
import org.deeplearning4j.arbiter.util.LeafUtils;
import org.deeplearning4j.nn.conf.ocnn.OCNNOutputLayer;


@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor(access = AccessLevel.PRIVATE) //For Jackson JSON/YAML deserialization
public class OCNNLayerSpace  extends BaseOutputLayerSpace {


    protected ParameterSpace nuSpace;
    protected ParameterSpace numHiddenSpace;

    private OCNNLayerSpace(Builder builder) {
        super(builder);

        this.numParameters = LeafUtils.countUniqueParameters(collectLeaves());
        this.nuSpace = builder.nuSpace;
        this.numHiddenSpace = builder.numHiddenSpace;
    }



    @Override
    public OCNNOutputLayer getValue(double[] parameterValues) {
        OCNNOutputLayer.Builder o = new OCNNOutputLayer.Builder();
        setLayerOptionsBuilder(o, parameterValues);
        return o.build();
    }

    protected void setLayerOptionsBuilder(OCNNOutputLayer.Builder builder, double[] values) {
        super.setLayerOptionsBuilder(builder, values);
        builder.nu(nuSpace.getValue(values));
        builder.hiddenLayerSize(numHiddenSpace.getValue(values));
    }



    public  static class Builder extends BaseOutputLayerSpace.Builder {
        protected ParameterSpace nuSpace;
        protected ParameterSpace numHiddenSpace;

        public Builder nu(ParameterSpace nuSpace) {
            this.nuSpace = nuSpace;
            return this;
        }

        public Builder numHidden(ParameterSpace numHiddenSpace) {
            this.numHiddenSpace = numHiddenSpace;
            return this;
        }

        public Builder numHidden(int numHidden) {
            this.numHiddenSpace = new FixedValue<>(numHidden);
            return this;
        }

        public Builder nu(double nu) {
            this.nuSpace = new FixedValue<>(nu);
            return this;
        }


        @Override
        @SuppressWarnings("unchecked")
        public OCNNLayerSpace build() {
            return new OCNNLayerSpace(this);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy