/**
 * A factor to give larger hidden layer size for complex tasks:
 * - 1 for easy tasks
 * - 2-3 for medium difficulty tasks
 * - 4-5 for complex tasks
 *
 * Remark: giving too high difficulty may result in over-fitting.
 * */
export type Difficulty = number;
/**
 * Formula `hiddenSize = difficulty * sqrt(inputSize * outputSize)`
 *
 * @example
 * let embeddingFeatures = 1280
 * let classes = 10
 * let difficulty = 2
 * let hiddenSize = calcHiddenLayerSize({
 *   inputSize: embeddingFeatures,
 *   outputSize: classes,
 *   difficulty,
 * })
 * // hiddenSize = 227
 */
export declare function calcHiddenLayerSize(options: {
    inputSize: number;
    outputSize: number;
    difficulty?: Difficulty;
}): number;
/**
 * Inject one or more hidden layers that's having large gap between input size and output size.
 *
 * @example
 * let embeddingFeatures = 1280
 * let classes = 10
 * let difficulty = 1.5
 * let numberOfHiddenLayers = 2
 * let layers = [embeddingFeatures, classes]
 * injectHiddenLayers({ layers, difficulty, numberOfHiddenLayers })
 * // layers = [1280, 700, 170, 10]
 */
export declare function injectHiddenLayers(options: {
    layers: number[];
    difficulty?: Difficulty;
    numberOfHiddenLayers?: number;
}): void;
