class AdaptiveStepSize {

    public static double findStartingStepSize(double stepScale, List<? extends Variable<DoubleTensor, ?>> variables) {
        long N = variables.stream()
            .mapToLong(v -> v.getValue().getLength())
            .sum();

        return stepScale / Math.pow(N, 0.25);
    }

      AdaptiveStepSize(double stepSize, double sigma, long adaptCount);

}