Python 没有隐藏层和线性激活函数的神经网络应该近似线性回归?

Python 没有隐藏层和线性激活函数的神经网络应该近似线性回归?,python,tensorflow,machine-learning,neural-network,linear-regression,Python,Tensorflow,Machine Learning,Neural Network,Linear Regression,据我所知,假设不使用隐藏层和线性激活函数,神经网络将产生与线性回归相同的方程形式。i、 e.y=总和(w_i*x_i+b_i),其中i为0,表示您拥有的特征数量 我试图通过使用线性回归的权重和偏差来证明这一点,并将其输入神经网络,看看结果是否相同。事实并非如此 我想知道我的理解是错误的,还是我的代码是错误的,或者两者都是错误的 是的,具有单层且无激活函数的神经网络相当于线性回归 定义一些未包含的变量: normTrainFeaturesDf = np.random.rand(100, 10)

据我所知,假设不使用隐藏层和线性激活函数,神经网络将产生与线性回归相同的方程形式。i、 e.y=总和(w_i*x_i+b_i),其中i为0,表示您拥有的特征数量

我试图通过使用线性回归的权重和偏差来证明这一点,并将其输入神经网络,看看结果是否相同。事实并非如此

我想知道我的理解是错误的,还是我的代码是错误的,或者两者都是错误的




是的,具有单层且无激活函数的神经网络相当于线性回归

定义一些未包含的变量:

normTrainFeaturesDf = np.random.rand(100, 10)
normTestFeaturesDf = np.random.rand(10, 10)
trainLabelsDf = np.random.rand(100)
然后输出如预期的那样:

>>> linear_model_preds = linearModel.predict(np.array(normTestFeaturesDf))
>>> nn_model_preds = nnModel.predict(normTestFeaturesDf).flatten()

>>> print(linear_model_preds)
>>> print(nn_model_preds)
[0.46030349 0.69676376 0.43064266 0.4583325  0.50750268 0.51753189
 0.47254946 0.50654825 0.52998559 0.35908762]
[0.46030346 0.69676375 0.43064266 0.45833248 0.5075026  0.5175319
 0.47254944 0.50654817 0.52998555 0.3590876 ]
除了浮动精度引起的微小变化外,这些数字是相同的

>>> np.allclose(linear_model_preds, nn_model_preds)
True

在打印结果之前,您是否对NN进行了培训?如果你没有看到的是随机初始化权重的预测。@Gabriel_D没有nnModel。set_weights(newTrialWeights)将NN的权重设置为线性模型的权重?你能把这变成一个可复制的例子吗<未定义代码>正常列车功能SDF。
>>> np.allclose(linear_model_preds, nn_model_preds)
True