/* * Encog(tm) Core v3.4 - Java Version * http://www.heatonresearch.com/encog/ * https://github.com/encog/encog-java-core * Copyright 2008-2016 Heaton Research, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * For more information on Heaton Research copyrights, licenses * and trademarks visit: * http://www.heatonresearch.com/copyright */ package org.encog.ml.data.temporal; import org.encog.engine.network.activation.ActivationFunction; /** * This class describes one unit of input, or output, to a temporal neural * network. Data can be both an input and output. Inputs are used to attempt * predict the output. * * @author jheaton */ public class TemporalDataDescription { /** * The type of data requested. * * @author jheaton * */ public enum Type { /** * Data in its raw, unmodified form. */ RAW, /** * The percent change. */ PERCENT_CHANGE, /** * The difference change. */ DELTA_CHANGE, } /** * The lowest allowed number. */ private final double low; /** * The highest allowed number. */ private final double high; /** * Is this data item used for input to prediction? */ private final boolean input; /** * Should this data item be predicted? */ private final boolean predict; /** * What type of data is requested? */ private final Type type; /** * What is the index of this data item in relation to the others. */ private int index; /** * Should an activation function be used? */ private final ActivationFunction activationFunction; /** * Construct a data description item. Set both low and high to zero for * unbounded. * * @param activationFunction * What activation function should be used? * @param low * What is the lowest allowed value. * @param high * What is the highest allowed value. * @param type * What type of data is this. * @param input * Used for input? * @param predict * Used for prediction? */ public TemporalDataDescription(final ActivationFunction activationFunction, final double low, final double high, final Type type, final boolean input, final boolean predict) { this.low = low; this.type = type; this.high = high; this.input = input; this.predict = predict; this.activationFunction = activationFunction; } /** * Construct a data description with an activation function, but no range. * * @param activationFunction * The activation function. * @param type * The type of data. * @param input * Used for input? * @param predict * Used for prediction? */ public TemporalDataDescription(final ActivationFunction activationFunction, final Type type, final boolean input, final boolean predict) { this(activationFunction, 0, 0, type, input, predict); } /** * Construct a data description with no activation function or range. * * @param type * The type of data. * @param input * Used for input? * @param predict * Used for prediction? */ public TemporalDataDescription(final Type type, final boolean input, final boolean predict) { this(null, 0, 0, type, input, predict); } /** * @return the activationFunction */ public ActivationFunction getActivationFunction() { return this.activationFunction; } /** * @return the high */ public double getHigh() { return this.high; } /** * @return the index */ public int getIndex() { return this.index; } /** * @return the low */ public double getLow() { return this.low; } /** * @return the type */ public Type getType() { return this.type; } /** * @return the input */ public boolean isInput() { return this.input; } /** * @return the predict */ public boolean isPredict() { return this.predict; } /** * @param index * the index to set */ public void setIndex(final int index) { this.index = index; } }