利用scikit学习从ANN中检索矩阵

2024-04-24 02:49:52 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Python3.5,我执行以下操作

from sklearn.neural_network import MLPRegressor
import pandas as pd

从sklearn导入数据集 从sklearn.分解导入PCA

# import some data to play with
iris = datasets.load_iris()
X = iris.data[0:100, :2]  # we only take the first two features.
Y = iris.target[0:100]

X = StandardScaler().fit_transform(X)

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.15)
reg = MLPRegressor(hidden_layer_sizes=(10,),
                           solver="lbfgs", #solver="lbfgs",
                           max_iter = 10000,
                           activation = 'relu')
reg.fit(X_train,y_train)

我可以使用reg.coefs_[0]得到矩阵,但是当我将它乘以一个测试用例时,我得不到0或1

我要做的是训练一个基于实验室数据的人工神经网络,然后在硬件上实现矩阵乘法。硬件可以做基本的运算,所以我需要把我的人工神经网络解构成一个矩阵,然后将矩阵乘法编程为迭代乘法/加法


Tags: 数据testimportirisdatatrain矩阵sklearn
1条回答
网友
1楼 · 发布于 2024-04-24 02:49:52

简而言之,“针对这个问题”的答案是

np.dot((np.dot(X_test[0],reg.coefs_[0]) +reg.intercepts_[0] ),reg.coefs_[1]) + reg.intercepts_[1]

答案如下(这里的版本更长:https://www.mohammadathar.com/blog/2017/2/15/a-different-look-at-neural-networks

感知器神经网络可以这样建模:enter image description here

真正的意思是“将输入值乘以权重,然后相加。然后添加一个偏差值。然后激活。然后乘以权重,再相加。然后激活。再重复一遍!”你知道吗

作为矩阵数学,它看起来像这样

enter image description here

所以reg.coefs_是矩阵系数(每层),而reg.intercepts_是活化值(同样,每层)

相关问题 更多 >