@dniskav/neuron 0.2.6 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -593,4 +593,473 @@ declare function validateArrayMinLength(arr: unknown, minLength: number, methodN
593
593
  declare function validate2DArray(arr: unknown, expectedRows: number, expectedCols: number, methodName: string): asserts arr is number[][];
594
594
  declare function validateNumber(value: unknown, methodName: string): asserts value is number;
595
595
 
596
- export { type Activation, Adam, AttentionHead, BatchNorm, BiasVector, ClipOptimizer, ClippedOptimizerFactory, Conv1D, DataLoader, type DataPair, Dropout, EmbeddingMatrix, GRULayer, LRScheduler, LSTMLayer, Layer, LayerNorm, ModelSaver, Momentum, MultiHeadAttention, Network, NetworkLSTM, type NetworkLSTMOptions, NetworkN, type NetworkNOptions, NetworkTransformer, type NetworkTransformerOptions, NetworkTransformerRL, type NetworkTransformerRLOptions, Neuron, NeuronN, type Optimizer, type OptimizerFactory, SGD, type Serializable, type TrainDataset, type TrainMetrics, type TrainableNetwork, type TrainableNetworkWithWeights, Trainer, type TrainerOptions, TransformerBlock, type TransformerBlockOptions, WeightMatrix, crossEntropy, crossEntropyDelta, crossEntropyDeltaRaw, defaultOptimizer, elu, leakyRelu, linear, makeElu, makeLeakyRelu, matMul, mse, mseDelta, relu, sigmoid, softmax, softmaxBackward, tanh, transpose, validate2DArray, validateArray, validateArrayMinLength, validateNumber };
596
+ declare class Perceptron {
597
+ weights: number[];
598
+ bias: number;
599
+ constructor(nInputs: number);
600
+ predict(inputs: number[]): 0 | 1;
601
+ train(inputs: number[], target: 0 | 1, lr: number): number;
602
+ }
603
+
604
+ declare class LinearRegression {
605
+ weights: number[];
606
+ private _nFeatures;
607
+ fitNormal(X: number[][], y: number[]): void;
608
+ fitGD(X: number[][], y: number[], lr: number, epochs: number): number[];
609
+ predict(x: number[]): number;
610
+ getCoefficients(): {
611
+ weights: number[];
612
+ bias: number;
613
+ };
614
+ }
615
+
616
+ declare class LogisticRegression {
617
+ weights: number[];
618
+ bias: number;
619
+ private _nFeatures;
620
+ train(X: number[][], y: number[], lr: number, epochs: number): number[];
621
+ predict(x: number[]): number;
622
+ classify(x: number[]): 0 | 1;
623
+ }
624
+ declare class SoftmaxRegression {
625
+ weights: number[][];
626
+ biases: number[];
627
+ private _nFeatures;
628
+ private _nClasses;
629
+ private _softmax;
630
+ train(X: number[][], y: number[], lr: number, epochs: number): number[];
631
+ predictProba(x: number[]): number[];
632
+ predict(x: number[]): number;
633
+ }
634
+
635
+ declare class GaussianNaiveBayes {
636
+ private _means;
637
+ private _variances;
638
+ private _logPriors;
639
+ private _classes;
640
+ private _nFeatures;
641
+ fit(X: number[][], y: number[]): void;
642
+ private _logGaussian;
643
+ private _logScores;
644
+ predict(x: number[]): number;
645
+ predictProba(x: number[]): Map<number, number>;
646
+ }
647
+
648
+ declare class DecisionTree {
649
+ private _root;
650
+ private _maxDepth;
651
+ private _minSamplesSplit;
652
+ private _task;
653
+ constructor(options?: {
654
+ maxDepth?: number;
655
+ minSamplesSplit?: number;
656
+ task?: "classification" | "regression";
657
+ });
658
+ private _gini;
659
+ private _mse;
660
+ private _impurity;
661
+ private _leafValue;
662
+ private _bestSplit;
663
+ private _buildNode;
664
+ fit(X: number[][], y: number[]): void;
665
+ private _traverse;
666
+ predict(x: number[]): number;
667
+ predictBatch(X: number[][]): number[];
668
+ }
669
+
670
+ interface KMeansOptions {
671
+ maxIter?: number;
672
+ seed?: number;
673
+ }
674
+ declare class KMeans {
675
+ /** Cluster centroids, shape [k][features]. Set after fit(). */
676
+ centroids: number[][];
677
+ private readonly _k;
678
+ private readonly _maxIter;
679
+ private _rng;
680
+ constructor(k: number, options?: KMeansOptions);
681
+ fit(X: number[][]): void;
682
+ predict(x: number[]): number;
683
+ predictBatch(X: number[][]): number[];
684
+ inertia(X: number[][]): number;
685
+ private _euclideanSq;
686
+ private _minDistSq;
687
+ private _nearestCentroid;
688
+ }
689
+
690
+ declare class PCA {
691
+ /** Eigenvectors (principal components), shape [nComponents][nFeatures]. */
692
+ components: number[][];
693
+ /** Eigenvalue for each component — equals the variance along that direction. */
694
+ explainedVariance: number[];
695
+ /** Column mean of the training data. */
696
+ mean: number[];
697
+ private readonly _nComponents;
698
+ constructor(nComponents: number);
699
+ fit(X: number[][]): void;
700
+ transform(X: number[][]): number[][];
701
+ fitTransform(X: number[][]): number[][];
702
+ inverseTransform(Z: number[][]): number[][];
703
+ explainedVarianceRatio(): number[];
704
+ private _covMatrix;
705
+ private _powerIteration;
706
+ private _matvec;
707
+ private _normalize;
708
+ }
709
+
710
+ interface SOMOptions {
711
+ initialLr?: number;
712
+ finalLr?: number;
713
+ initialSigma?: number;
714
+ finalSigma?: number;
715
+ }
716
+ declare class SOM {
717
+ /** Weight (prototype) vectors, shape [rows][cols][inputSize]. */
718
+ weights: number[][][];
719
+ private readonly _rows;
720
+ private readonly _cols;
721
+ private readonly _inputSize;
722
+ private readonly _initialLr;
723
+ private readonly _finalLr;
724
+ private readonly _initialSigma;
725
+ private readonly _finalSigma;
726
+ constructor(rows: number, cols: number, inputSize: number, options?: SOMOptions);
727
+ train(X: number[][], epochs: number): void;
728
+ getBMU(x: number[]): [number, number];
729
+ predict(x: number[]): [number, number];
730
+ quantizationError(X: number[][]): number;
731
+ private _distSq;
732
+ private _shuffle;
733
+ }
734
+
735
+ declare class HopfieldNetwork {
736
+ /** Symmetric weight matrix, shape [n][n] with zero diagonal. */
737
+ weights: number[][];
738
+ /** Number of neurons. */
739
+ readonly n: number;
740
+ /** Number of patterns stored so far. */
741
+ storedPatterns: number;
742
+ constructor(n: number);
743
+ store(pattern: number[]): void;
744
+ recall(input: number[], maxIter?: number): number[];
745
+ energy(state: number[]): number;
746
+ static binarize(arr: number[]): number[];
747
+ static unbinarize(arr: number[]): number[];
748
+ private _shuffleInPlace;
749
+ }
750
+
751
+ declare class Autoencoder {
752
+ /** Encoder sub-network: maps input → latent representation. */
753
+ readonly encoder: NetworkN;
754
+ /** Decoder sub-network: maps latent representation → reconstructed input. */
755
+ readonly decoder: NetworkN;
756
+ private readonly _inputSize;
757
+ private readonly _latentSize;
758
+ constructor(inputSize: number, encoderHidden: number[], latentSize: number, decoderHidden: number[], options?: NetworkNOptions);
759
+ encode(x: number[]): number[];
760
+ decode(z: number[]): number[];
761
+ reconstruct(x: number[]): number[];
762
+ train(x: number[], lr: number): number;
763
+ trainBatch(X: number[][], lr: number): number;
764
+ }
765
+
766
+ declare class Conv2D {
767
+ readonly inputHeight: number;
768
+ readonly inputWidth: number;
769
+ readonly channels: number;
770
+ readonly kH: number;
771
+ readonly kW: number;
772
+ readonly filters: number;
773
+ readonly stride: number;
774
+ readonly padding: 'valid' | 'same';
775
+ kernels: number[][][][];
776
+ biases: number[];
777
+ private _kOpts;
778
+ private _bOpts;
779
+ private _input;
780
+ private _padded;
781
+ constructor(inputHeight: number, inputWidth: number, channels: number, kernelSize: number | [number, number], filters: number, options?: {
782
+ stride?: number;
783
+ padding?: 'valid' | 'same';
784
+ optimizerFactory?: OptimizerFactory;
785
+ });
786
+ private _pad;
787
+ outputShape(): [number, number, number];
788
+ forward(input: number[][][]): number[][][];
789
+ backward(dOutput: number[][][], lr: number): number[][][];
790
+ getWeights(): number[];
791
+ setWeights(weights: number[]): void;
792
+ }
793
+
794
+ declare class MaxPool2D {
795
+ readonly poolSize: number;
796
+ readonly stride: number;
797
+ private _maxMask;
798
+ private _inputH;
799
+ private _inputW;
800
+ private _inputC;
801
+ constructor(poolSize: number, stride?: number);
802
+ outputShape(inputH: number, inputW: number, channels: number): [number, number, number];
803
+ forward(input: number[][][]): number[][][];
804
+ backward(dOutput: number[][][]): number[][][];
805
+ }
806
+
807
+ declare class Flatten {
808
+ inputShape: [number, number, number] | null;
809
+ forward(input: number[][][]): number[];
810
+ backward(dOutput: number[]): number[][][];
811
+ }
812
+
813
+ declare class RNN {
814
+ readonly inputSize: number;
815
+ readonly hiddenSize: number;
816
+ readonly outputSize: number;
817
+ Wxh: number[][];
818
+ Whh: number[][];
819
+ Why: number[][];
820
+ bh: number[];
821
+ by: number[];
822
+ private _h;
823
+ private _traj;
824
+ private _outputs;
825
+ private _opts;
826
+ constructor(inputSize: number, hiddenSize: number, outputSize: number, optimizerFactory?: OptimizerFactory);
827
+ reset(): void;
828
+ forward(sequence: number[][]): {
829
+ outputs: number[][];
830
+ hiddens: number[][];
831
+ };
832
+ backward(sequence: number[][], targets: number[][], lr: number): number;
833
+ }
834
+
835
+ declare class Seq2Seq {
836
+ readonly encoder: LSTMLayer;
837
+ readonly decoder: LSTMLayer;
838
+ W_out: number[][];
839
+ b_out: number[];
840
+ readonly inputSize: number;
841
+ readonly hiddenSize: number;
842
+ readonly outputSize: number;
843
+ private _wOutOpts;
844
+ private _bOutOpts;
845
+ constructor(inputSize: number, hiddenSize: number, outputSize: number, options?: {
846
+ optimizerFactory?: OptimizerFactory;
847
+ });
848
+ private _project;
849
+ encode(inputSequence: number[][]): {
850
+ h: number[];
851
+ c: number[];
852
+ };
853
+ decode(contextVector: {
854
+ h: number[];
855
+ c: number[];
856
+ }, steps: number): number[][];
857
+ trainStep(inputSeq: number[][], targetSeq: number[][], lr: number): number;
858
+ }
859
+
860
+ declare class CausalConv1D {
861
+ readonly inputChannels: number;
862
+ readonly outputChannels: number;
863
+ readonly kernelSize: number;
864
+ readonly dilation: number;
865
+ kernels: number[][][];
866
+ biases: number[];
867
+ private _kOpts;
868
+ private _bOpts;
869
+ private _paddedInput;
870
+ private _inputLen;
871
+ constructor(inputChannels: number, outputChannels: number, kernelSize: number, dilation: number, optimizerFactory?: OptimizerFactory);
872
+ forward(input: number[][]): number[][];
873
+ backward(dOutput: number[][], lr: number): number[][];
874
+ }
875
+ declare class TCN {
876
+ readonly layers: CausalConv1D[];
877
+ private _outputW;
878
+ private _outputB;
879
+ private _outOpts;
880
+ private _bOutOpts;
881
+ readonly inputChannels: number;
882
+ readonly channels: number;
883
+ readonly kernelSize: number;
884
+ readonly levels: number;
885
+ readonly outputSize: number;
886
+ private _layerInputs;
887
+ private _layerOutputs;
888
+ private _lastHidden;
889
+ private _finalOutputs;
890
+ constructor(inputChannels: number, channels: number, kernelSize: number, levels: number, outputSize: number, optimizerFactory?: OptimizerFactory);
891
+ get receptiveField(): number;
892
+ forward(sequence: number[][]): number[][];
893
+ train(sequence: number[][], targets: number[][], lr: number): number;
894
+ }
895
+
896
+ declare class GAN {
897
+ readonly generator: NetworkN;
898
+ readonly discriminator: NetworkN;
899
+ readonly latentDim: number;
900
+ constructor(latentDim: number, generatorHidden: number[], outputDim: number, discriminatorHidden: number[], options?: {
901
+ generatorOptions?: NetworkNOptions;
902
+ discriminatorOptions?: NetworkNOptions;
903
+ });
904
+ generate(z?: number[]): number[];
905
+ discriminate(x: number[]): number;
906
+ trainStep(realBatch: number[][], lr: number): {
907
+ dLoss: number;
908
+ gLoss: number;
909
+ };
910
+ sampleLatent(): number[];
911
+ }
912
+
913
+ declare class VAE {
914
+ readonly encoder: NetworkN;
915
+ readonly decoder: NetworkN;
916
+ readonly latentDim: number;
917
+ constructor(inputSize: number, encoderHidden: number[], latentDim: number, decoderHidden: number[], options?: NetworkNOptions);
918
+ encode(x: number[]): {
919
+ mu: number[];
920
+ logVar: number[];
921
+ };
922
+ reparametrize(mu: number[], logVar: number[]): number[];
923
+ decode(z: number[]): number[];
924
+ forward(x: number[]): {
925
+ reconstruction: number[];
926
+ mu: number[];
927
+ logVar: number[];
928
+ z: number[];
929
+ };
930
+ train(x: number[], lr: number): {
931
+ totalLoss: number;
932
+ reconLoss: number;
933
+ klLoss: number;
934
+ };
935
+ generate(z?: number[]): number[];
936
+ private _sampleNormal;
937
+ }
938
+
939
+ declare class Value {
940
+ data: number;
941
+ grad: number;
942
+ private _backward;
943
+ private _prev;
944
+ private _op;
945
+ constructor(data: number, children?: Value[], op?: string);
946
+ add(other: Value | number): Value;
947
+ mul(other: Value | number): Value;
948
+ pow(exp: number): Value;
949
+ relu(): Value;
950
+ tanh(): Value;
951
+ sigmoid(): Value;
952
+ exp(): Value;
953
+ div(other: Value | number): Value;
954
+ sub(other: Value | number): Value;
955
+ neg(): Value;
956
+ backward(): void;
957
+ toString(): string;
958
+ }
959
+
960
+ interface WeightStats {
961
+ mean: number;
962
+ std: number;
963
+ min: number;
964
+ max: number;
965
+ deadCount: number;
966
+ totalParams: number;
967
+ }
968
+ declare class WeightInspector {
969
+ static inspect(network: NetworkN, deadThreshold?: number): WeightStats[];
970
+ static inspectAll(network: NetworkN, deadThreshold?: number): WeightStats;
971
+ static print(network: NetworkN, deadThreshold?: number): void;
972
+ static countDeadReLUs(activations: number[][], threshold?: number): number;
973
+ }
974
+
975
+ declare function confusionMatrix(yTrue: number[], yPred: number[], numClasses?: number): number[][];
976
+ declare function precision(yTrue: number[], yPred: number[], positiveClass?: number): number;
977
+ declare function recall(yTrue: number[], yPred: number[], positiveClass?: number): number;
978
+ declare function f1Score(yTrue: number[], yPred: number[], positiveClass?: number): number;
979
+ declare function accuracy(yTrue: number[], yPred: number[]): number;
980
+ declare function rocCurve(yTrue: number[], yScores: number[]): {
981
+ fpr: number;
982
+ tpr: number;
983
+ threshold: number;
984
+ }[];
985
+ declare function auc(yTrue: number[], yScores: number[]): number;
986
+ declare function mae(yTrue: number[], yPred: number[]): number;
987
+ declare function rmse(yTrue: number[], yPred: number[]): number;
988
+ declare function r2Score(yTrue: number[], yPred: number[]): number;
989
+ declare function perplexity(yTrue: number[], probabilities: number[][]): number;
990
+ declare function printConfusionMatrix(matrix: number[][], labels?: string[]): void;
991
+ declare function classificationReport(yTrue: number[], yPred: number[], labels?: string[]): void;
992
+
993
+ declare class EarlyStopping {
994
+ bestValue: number;
995
+ readonly patience: number;
996
+ readonly minDelta: number;
997
+ readonly mode: 'min' | 'max';
998
+ readonly restoreBest: boolean;
999
+ counter: number;
1000
+ stopped: boolean;
1001
+ bestEpoch: number;
1002
+ bestWeights: number[] | null;
1003
+ constructor(options?: {
1004
+ patience?: number;
1005
+ minDelta?: number;
1006
+ mode?: 'min' | 'max';
1007
+ restoreBest?: boolean;
1008
+ });
1009
+ update(value: number, epoch: number, weights?: number[]): boolean;
1010
+ reset(): void;
1011
+ }
1012
+
1013
+ declare class LossPlotter {
1014
+ private readonly width;
1015
+ private readonly height;
1016
+ private readonly title;
1017
+ private losses;
1018
+ private epochs;
1019
+ constructor(options?: {
1020
+ width?: number;
1021
+ height?: number;
1022
+ title?: string;
1023
+ });
1024
+ add(loss: number, epoch?: number): void;
1025
+ addMultiple(losses: number[]): void;
1026
+ render(): string;
1027
+ print(): void;
1028
+ reset(): void;
1029
+ }
1030
+
1031
+ declare class DataAugmentation {
1032
+ static addNoise(x: number[], sigma?: number): number[];
1033
+ static jitter(x: number[], delta?: number): number[];
1034
+ static flipHorizontal(x: number[]): number[];
1035
+ static normalize(X: number[][]): {
1036
+ normalized: number[][];
1037
+ min: number[];
1038
+ max: number[];
1039
+ };
1040
+ static normalizePoint(x: number[], min: number[], max: number[]): number[];
1041
+ static standardize(X: number[][]): {
1042
+ standardized: number[][];
1043
+ mean: number[];
1044
+ std: number[];
1045
+ };
1046
+ static standardizePoint(x: number[], mean: number[], std: number[]): number[];
1047
+ static augmentBatch(X: number[][], y: number[], factor?: number, sigma?: number): {
1048
+ X: number[][];
1049
+ y: number[];
1050
+ };
1051
+ static shuffle(X: number[][], y: number[]): {
1052
+ X: number[][];
1053
+ y: number[];
1054
+ };
1055
+ static split(X: number[][], y: number[], trainRatio?: number, valRatio?: number): {
1056
+ trainX: number[][];
1057
+ trainY: number[];
1058
+ valX: number[][];
1059
+ valY: number[];
1060
+ testX: number[][];
1061
+ testY: number[];
1062
+ };
1063
+ }
1064
+
1065
+ export { type Activation, Adam, AttentionHead, Autoencoder, BatchNorm, BiasVector, CausalConv1D, ClipOptimizer, ClippedOptimizerFactory, Conv1D, Conv2D, DataAugmentation, DataLoader, type DataPair, DecisionTree, Dropout, EarlyStopping, EmbeddingMatrix, Flatten, GAN, GRULayer, GaussianNaiveBayes, HopfieldNetwork, KMeans, type KMeansOptions, LRScheduler, LSTMLayer, Layer, LayerNorm, LinearRegression, LogisticRegression, LossPlotter, MaxPool2D, ModelSaver, Momentum, MultiHeadAttention, Network, NetworkLSTM, type NetworkLSTMOptions, NetworkN, type NetworkNOptions, NetworkTransformer, type NetworkTransformerOptions, NetworkTransformerRL, type NetworkTransformerRLOptions, Neuron, NeuronN, type Optimizer, type OptimizerFactory, PCA, Perceptron, RNN, SGD, SOM, type SOMOptions, Seq2Seq, type Serializable, SoftmaxRegression, TCN, type TrainDataset, type TrainMetrics, type TrainableNetwork, type TrainableNetworkWithWeights, Trainer, type TrainerOptions, TransformerBlock, type TransformerBlockOptions, VAE, Value, WeightInspector, WeightMatrix, type WeightStats, accuracy, auc, classificationReport, confusionMatrix, crossEntropy, crossEntropyDelta, crossEntropyDeltaRaw, defaultOptimizer, elu, f1Score, leakyRelu, linear, mae, makeElu, makeLeakyRelu, matMul, mse, mseDelta, perplexity, precision, printConfusionMatrix, r2Score, recall, relu, rmse, rocCurve, sigmoid, softmax, softmaxBackward, tanh, transpose, validate2DArray, validateArray, validateArrayMinLength, validateNumber };