import type { TrainOptions } from '@/types/train_options' import type { ModelConf } from '@/types/model_conf' // The ModelUtils class provides a static method to better format an arbitrary // long floating point number. In addition, it provides the default // configuration for the training related app properties. export class ModelUtils { static defaultTrainOptions: TrainOptions = { learningRate: '0.001', dropoutRate: '0', batchSize: '16', lossFunction: 'meanSquaredError', optimizer: 'sgd', } static defaultModelConf: ModelConf = { model: null, loss: null, metrics: [], plottedMetrics: [], isTraining: false, totalEpochs: 0, actEpoch: 0, actBatch: 0, history: [], predictedValue: null, } // rounds and formats a given weight (but e.g. bias and every other number also // works fine) static formatWeight(weight: number): string { let weightString: string if (!weight) { weightString = '' } else if (!isFinite(weight)) { weightString = weight.toString() } else { weightString = (weight < 0 ? '' : '+') + weight if (weightString.indexOf('.') != -1) { while (weightString.length > 7 && weightString.slice(-1) != '.') { weightString = weightString.slice(0, -1) } weightString = weightString.padEnd(7, '0') } } return weightString } }