Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的线性回归神经网络有什么问题_Python_Neural Network_Linear Regression - Fatal编程技术网

Python 我的线性回归神经网络有什么问题

Python 我的线性回归神经网络有什么问题,python,neural-network,linear-regression,Python,Neural Network,Linear Regression,如果我理解正确,线性激活函数总是f(x)=x 如果你检查这段代码,你会看到平方误差越来越大,我不知道如何用神经网络解决这个简单的线性问题。我知道还有其他的模型和库,但我正试图这样做 您没有将学习率(请参阅和更正式的讨论)纳入您的模型中。当你训练你的网络时,你也需要选择一个学习率参数,它对你的损失是否会减少以及收敛速度有很大的影响 通过设置 import numpy as np np.random.seed(0) a = np.random.randint(1,100, size= 1000).

如果我理解正确,线性激活函数总是f(x)=x


如果你检查这段代码,你会看到平方误差越来越大,我不知道如何用神经网络解决这个简单的线性问题。我知道还有其他的模型和库,但我正试图这样做

您没有将学习率(请参阅和更正式的讨论)纳入您的模型中。当你训练你的网络时,你也需要选择一个学习率参数,它对你的损失是否会减少以及收敛速度有很大的影响

通过设置

import numpy as np

np.random.seed(0)
a = np.random.randint(1,100, size= 1000).reshape(1000,1)
b = np.random.randint(0,2, size=1000).reshape(1000,1)

y = np.where(b==0,a*2, a*3)

X = np.hstack((a,b))
y = y

from sklearn.preprocessing import StandardScaler

sx = StandardScaler()
X = sx.fit_transform(X)

sy = StandardScaler()
y = sy.fit_transform(y)

w0 = np.random.normal(size=(2,1), scale=0.1)

for i in range(100):
    input_layer = X
    output_layer = X.dot(w0) 

    error = y - output_layer
    square_error = np.sqrt(np.mean(error**2))

    print(square_error)

    w0+= input_layer.T.dot(error) 
您选择的学习率为1,结果太大。如果你改为

w0+= input_layer.T.dot(error)
(即,选择学习率0.0005)损失将减少:

w0+= 0.0005*input_layer.T.dot(error) 
但它不会收敛到0,因为您的模型不是线性的。最后,你得到的权重是

1.0017425183
0.521060951473
0.303777564629
0.21993949808
0.193933601196
0.18700323975
0.185262617455
0.184832603515
0.184726763539
.
.
.

嘿,米里亚姆,再次感谢你。你是最棒的!谢谢,很乐意帮忙:)
array([[ 0.92486712],
       [ 0.318241  ]])