@dniskav/neuron 0.2.7 → 0.3.1

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,590 @@ 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
+ type Word2VecModel = 'skipgram' | 'cbow';
897
+ interface Word2VecOptions {
898
+ /** Size of the sliding context window on each side of the center word. Default 2. */
899
+ windowSize?: number;
900
+ /** Training architecture. Default 'skipgram'. */
901
+ model?: Word2VecModel;
902
+ /** Ignore words with corpus frequency below this threshold. Default 1. */
903
+ minCount?: number;
904
+ }
905
+ declare class Word2Vec {
906
+ /** Learned word vectors, shape [vocabSize][embeddingDim]. */
907
+ embeddings: number[][];
908
+ /** Maps each vocabulary word to its integer index. */
909
+ vocab: Map<string, number>;
910
+ vocabSize: number;
911
+ embeddingDim: number;
912
+ private _indexToWord;
913
+ private _W2;
914
+ private _windowSize;
915
+ private _model;
916
+ private _minCount;
917
+ private _trained;
918
+ constructor(embeddingDim?: number, options?: Word2VecOptions);
919
+ buildVocab(sentences: string[][]): void;
920
+ static tokenize(text: string): string[];
921
+ train(sentences: string[][], lr?: number, epochs?: number): number[];
922
+ getEmbedding(word: string): number[];
923
+ similarity(word1: string, word2: string): number;
924
+ mostSimilar(word: string, topK?: number): {
925
+ word: string;
926
+ score: number;
927
+ }[];
928
+ analogy(positive1: string, negative: string, positive2: string, topK?: number): {
929
+ word: string;
930
+ score: number;
931
+ }[];
932
+ private _skipgramStep;
933
+ private _cbowStep;
934
+ private _hiddenToScores;
935
+ private _nearestByVector;
936
+ private _cosine;
937
+ }
938
+
939
+ interface TSNEOptions {
940
+ /** Dimensionality of the output embedding. Default 2. */
941
+ nComponents?: number;
942
+ /**
943
+ * Perplexity — loosely controls the effective number of neighbors considered
944
+ * for each point. Typical values: 5–50. Default 30.
945
+ * Must be less than the number of data points.
946
+ */
947
+ perplexity?: number;
948
+ /** Learning rate for gradient descent. Default 200. */
949
+ lr?: number;
950
+ /** Number of gradient-descent iterations. Default 1000. */
951
+ nIter?: number;
952
+ /**
953
+ * Seed for the pseudo-random number generator.
954
+ * Set to any integer for reproducible results. Default uses Math.random.
955
+ */
956
+ seed?: number;
957
+ }
958
+ declare class TSNE {
959
+ /** Result of the embedding, shape [n][nComponents]. Available after fit(). */
960
+ embedding: number[][];
961
+ private readonly _nComponents;
962
+ private readonly _perplexity;
963
+ private readonly _lr;
964
+ private readonly _nIter;
965
+ private readonly _seed;
966
+ private _klDivergence;
967
+ private _P;
968
+ constructor(options?: TSNEOptions);
969
+ fit(X: number[][]): void;
970
+ fitTransform(X: number[][]): number[][];
971
+ kl(): number;
972
+ private _computePcond;
973
+ }
974
+
975
+ declare class PositionalEncoding {
976
+ static encode(pos: number, dModel: number): number[];
977
+ static encodeSequence(seqLen: number, dModel: number): number[][];
978
+ static apply(embeddings: number[][], seqLen?: number): number[][];
979
+ }
980
+ declare class LearnedPositionalEncoding {
981
+ readonly maxSeqLen: number;
982
+ readonly dModel: number;
983
+ weights: number[][];
984
+ constructor(maxSeqLen: number, dModel: number);
985
+ getEncoding(pos: number): number[];
986
+ apply(embeddings: number[][], seqLen?: number): number[][];
987
+ update(dWeights: number[][], lr: number): void;
988
+ }
989
+
990
+ declare class Augmenter {
991
+ static addNoise(x: number[], sigma?: number): number[];
992
+ static dropoutFeatures(x: number[], rate?: number): number[];
993
+ static augment(x: number[], noiseStd?: number, dropRate?: number): number[];
994
+ static makePair(x: number[]): [number[], number[]];
995
+ }
996
+ declare class ContrastiveLearning {
997
+ encoder: NetworkN;
998
+ projectionHead: NetworkN;
999
+ temperature: number;
1000
+ constructor(inputSize: number, encoderHidden: number[], projectionDim: number, options?: {
1001
+ temperature?: number;
1002
+ encoderOptions?: NetworkNOptions;
1003
+ });
1004
+ encode(x: number[]): number[];
1005
+ project(x: number[]): number[];
1006
+ static cosineSimilarity(a: number[], b: number[]): number;
1007
+ computeLoss(pairs: [number[], number[]][]): number;
1008
+ trainStep(pairs: [number[], number[]][], lr: number): number;
1009
+ private _forwardProjections;
1010
+ private _ntXentLoss;
1011
+ }
1012
+
1013
+ declare class GAN {
1014
+ readonly generator: NetworkN;
1015
+ readonly discriminator: NetworkN;
1016
+ readonly latentDim: number;
1017
+ constructor(latentDim: number, generatorHidden: number[], outputDim: number, discriminatorHidden: number[], options?: {
1018
+ generatorOptions?: NetworkNOptions;
1019
+ discriminatorOptions?: NetworkNOptions;
1020
+ });
1021
+ generate(z?: number[]): number[];
1022
+ discriminate(x: number[]): number;
1023
+ trainStep(realBatch: number[][], lr: number): {
1024
+ dLoss: number;
1025
+ gLoss: number;
1026
+ };
1027
+ sampleLatent(): number[];
1028
+ }
1029
+
1030
+ declare class VAE {
1031
+ readonly encoder: NetworkN;
1032
+ readonly decoder: NetworkN;
1033
+ readonly latentDim: number;
1034
+ constructor(inputSize: number, encoderHidden: number[], latentDim: number, decoderHidden: number[], options?: NetworkNOptions);
1035
+ encode(x: number[]): {
1036
+ mu: number[];
1037
+ logVar: number[];
1038
+ };
1039
+ reparametrize(mu: number[], logVar: number[]): number[];
1040
+ decode(z: number[]): number[];
1041
+ forward(x: number[]): {
1042
+ reconstruction: number[];
1043
+ mu: number[];
1044
+ logVar: number[];
1045
+ z: number[];
1046
+ };
1047
+ train(x: number[], lr: number): {
1048
+ totalLoss: number;
1049
+ reconLoss: number;
1050
+ klLoss: number;
1051
+ };
1052
+ generate(z?: number[]): number[];
1053
+ private _sampleNormal;
1054
+ }
1055
+
1056
+ declare class Value {
1057
+ data: number;
1058
+ grad: number;
1059
+ private _backward;
1060
+ private _prev;
1061
+ private _op;
1062
+ constructor(data: number, children?: Value[], op?: string);
1063
+ add(other: Value | number): Value;
1064
+ mul(other: Value | number): Value;
1065
+ pow(exp: number): Value;
1066
+ relu(): Value;
1067
+ tanh(): Value;
1068
+ sigmoid(): Value;
1069
+ exp(): Value;
1070
+ div(other: Value | number): Value;
1071
+ sub(other: Value | number): Value;
1072
+ neg(): Value;
1073
+ backward(): void;
1074
+ toString(): string;
1075
+ }
1076
+
1077
+ interface WeightStats {
1078
+ mean: number;
1079
+ std: number;
1080
+ min: number;
1081
+ max: number;
1082
+ deadCount: number;
1083
+ totalParams: number;
1084
+ }
1085
+ declare class WeightInspector {
1086
+ static inspect(network: NetworkN, deadThreshold?: number): WeightStats[];
1087
+ static inspectAll(network: NetworkN, deadThreshold?: number): WeightStats;
1088
+ static print(network: NetworkN, deadThreshold?: number): void;
1089
+ static countDeadReLUs(activations: number[][], threshold?: number): number;
1090
+ }
1091
+
1092
+ declare function confusionMatrix(yTrue: number[], yPred: number[], numClasses?: number): number[][];
1093
+ declare function precision(yTrue: number[], yPred: number[], positiveClass?: number): number;
1094
+ declare function recall(yTrue: number[], yPred: number[], positiveClass?: number): number;
1095
+ declare function f1Score(yTrue: number[], yPred: number[], positiveClass?: number): number;
1096
+ declare function accuracy(yTrue: number[], yPred: number[]): number;
1097
+ declare function rocCurve(yTrue: number[], yScores: number[]): {
1098
+ fpr: number;
1099
+ tpr: number;
1100
+ threshold: number;
1101
+ }[];
1102
+ declare function auc(yTrue: number[], yScores: number[]): number;
1103
+ declare function mae(yTrue: number[], yPred: number[]): number;
1104
+ declare function rmse(yTrue: number[], yPred: number[]): number;
1105
+ declare function r2Score(yTrue: number[], yPred: number[]): number;
1106
+ declare function perplexity(yTrue: number[], probabilities: number[][]): number;
1107
+ declare function printConfusionMatrix(matrix: number[][], labels?: string[]): void;
1108
+ declare function classificationReport(yTrue: number[], yPred: number[], labels?: string[]): void;
1109
+
1110
+ declare class EarlyStopping {
1111
+ bestValue: number;
1112
+ readonly patience: number;
1113
+ readonly minDelta: number;
1114
+ readonly mode: 'min' | 'max';
1115
+ readonly restoreBest: boolean;
1116
+ counter: number;
1117
+ stopped: boolean;
1118
+ bestEpoch: number;
1119
+ bestWeights: number[] | null;
1120
+ constructor(options?: {
1121
+ patience?: number;
1122
+ minDelta?: number;
1123
+ mode?: 'min' | 'max';
1124
+ restoreBest?: boolean;
1125
+ });
1126
+ update(value: number, epoch: number, weights?: number[]): boolean;
1127
+ reset(): void;
1128
+ }
1129
+
1130
+ declare class LossPlotter {
1131
+ private readonly width;
1132
+ private readonly height;
1133
+ private readonly title;
1134
+ private losses;
1135
+ private epochs;
1136
+ constructor(options?: {
1137
+ width?: number;
1138
+ height?: number;
1139
+ title?: string;
1140
+ });
1141
+ add(loss: number, epoch?: number): void;
1142
+ addMultiple(losses: number[]): void;
1143
+ render(): string;
1144
+ print(): void;
1145
+ reset(): void;
1146
+ }
1147
+
1148
+ declare class DataAugmentation {
1149
+ static addNoise(x: number[], sigma?: number): number[];
1150
+ static jitter(x: number[], delta?: number): number[];
1151
+ static flipHorizontal(x: number[]): number[];
1152
+ static normalize(X: number[][]): {
1153
+ normalized: number[][];
1154
+ min: number[];
1155
+ max: number[];
1156
+ };
1157
+ static normalizePoint(x: number[], min: number[], max: number[]): number[];
1158
+ static standardize(X: number[][]): {
1159
+ standardized: number[][];
1160
+ mean: number[];
1161
+ std: number[];
1162
+ };
1163
+ static standardizePoint(x: number[], mean: number[], std: number[]): number[];
1164
+ static augmentBatch(X: number[][], y: number[], factor?: number, sigma?: number): {
1165
+ X: number[][];
1166
+ y: number[];
1167
+ };
1168
+ static shuffle(X: number[][], y: number[]): {
1169
+ X: number[][];
1170
+ y: number[];
1171
+ };
1172
+ static split(X: number[][], y: number[], trainRatio?: number, valRatio?: number): {
1173
+ trainX: number[][];
1174
+ trainY: number[];
1175
+ valX: number[][];
1176
+ valY: number[];
1177
+ testX: number[][];
1178
+ testY: number[];
1179
+ };
1180
+ }
1181
+
1182
+ export { type Activation, Adam, AttentionHead, Augmenter, Autoencoder, BatchNorm, BiasVector, CausalConv1D, ClipOptimizer, ClippedOptimizerFactory, ContrastiveLearning, Conv1D, Conv2D, DataAugmentation, DataLoader, type DataPair, DecisionTree, Dropout, EarlyStopping, EmbeddingMatrix, Flatten, GAN, GRULayer, GaussianNaiveBayes, HopfieldNetwork, KMeans, type KMeansOptions, LRScheduler, LSTMLayer, Layer, LayerNorm, LearnedPositionalEncoding, 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, PositionalEncoding, RNN, SGD, SOM, type SOMOptions, Seq2Seq, type Serializable, SoftmaxRegression, TCN, TSNE, type TSNEOptions, type TrainDataset, type TrainMetrics, type TrainableNetwork, type TrainableNetworkWithWeights, Trainer, type TrainerOptions, TransformerBlock, type TransformerBlockOptions, VAE, Value, WeightInspector, WeightMatrix, type WeightStats, Word2Vec, type Word2VecModel, type Word2VecOptions, 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 };