class Tensor implements Serializable {

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Tensor other = (Tensor) obj;
        if (this.cols != other.cols) {
            return false;
        }
        if (this.rows != other.rows) {
            return false;
        }
        if (this.depth != other.depth) {
            return false;
        }
        if (this.fourthDim != other.fourthDim) {
            return false;
        }
        if (this.dimensions != other.dimensions) {
            return false;
        }
        if (!Arrays.equals(this.values, other.values)) {
            return false;
        }
        return true;
    }

    public  Tensor(final float... values);
    public  Tensor(final float[][] vals);
    public  Tensor(final float[][][] vals);
    public  Tensor(final float[][][][] vals);
    public  Tensor(int cols);
    public  Tensor(int cols, float val);
    public  Tensor(int rows, int cols);
    public  Tensor(int rows, int cols, float[] values);
    public  Tensor(int rows, int cols, int depth);
    public  Tensor(int rows, int cols, int depth, int fourthDim);
    public  Tensor(int rows, int cols, int depth, float[] values);
    private  Tensor(Tensor t);

}