Я пытаюсь уменьшить размерность, используя: https://www.cs.toronto.edu/~hinton/science.pdf
То, что это делает, - это создание автоэнкодера со средним слоем, состоящим из 2 узлов.
после тренировки, нейронная сеть «разрезается пополам», и мы просто распространяемся вперед, пока не получим 2D-данные. Мы можем подготовить это, и сделать KNN, и другие забавные вещи
Я использую sklearn, и могу пройти до обучения сети
from sklearn.neural_network import MLPRegressor
HLS = (4,2,4)
m_ann = MLPRegressor(hidden_layer_sizes=(HLS), max_iter=10**5, activation='relu')
m_ann.fit(X_train,X_train)
и я могу получить коэффициенты NN с m_ann.coefs_
и m_ann.intercepts_
Итак, я могу создать цикл, который выполняет умножение матриц вручную, сложение, затем написать свою собственную функцию relu
и вызвать ее. НО я хотел бы применить любую активационную функцию, которую использует моя сеть (например, если пользователь тренируется с использованием линейной или сигмоидальной активации, я не хочу, чтобы ему приходилось менять какой-либо код)
Можно ли заставить MLPRegressor применить функцию активации к произвольным данным?