keras--线性回归

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
#Sequential:按顺序构成的模型(最简单的一种模型)
from tensorflow.keras.models import Sequential
#Dense:全连接层
from tensorflow.keras.layers import Dense


#使用numpy生成100个随机点
x_data=np.random.rand(100)
noise=np.random.normal(0,0.01,x_data.shape)
y_data=x_data*0.1+0.2+noise
#显示随机点
plt.scatter(x_data,y_data)
plt.show()



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

#构建一个顺序模型
model=Sequential()
#在模型中添加一个全连接层
model.add(Dense(units=1,input_dim=1))#units是输出维度
#编译模型
model.compile(optimizer='sgd',loss='mse')
#训练模型(训练3001个批次,若效果不好可以尝试增大训练次数)
for step in range(3001):
#每次训练一个批次
cost=model.train_on_batch(x_data,y_data)#把所有数据作为一个批次进行训练
#每500个batch打印一次cost值
if step%500==0:
print('cost:',cost)

#打印权值和偏置值
W,b=model.layers[0].get_weights()
print('W:',W,'b:',b)

#把x_data输入网络中,得到预测值y_pred
y_pred=model.predict(x_data)

#显示随机点
plt.scatter(x_data,y_data)
#显示预测结果
plt.plot(x_data,y_pred,'r-',lw=3)#预测值
plt.show()

输出结果:

1
2
3
4
5
6
7
8
cost: 0.04835104
cost: 0.00014408033
cost: 0.00010225594
cost: 9.2460454e-05
cost: 9.016635e-05
cost: 8.962906e-05
cost: 8.9503264e-05
W: [[0.10286073]] b: [0.198199]


凡希 wechat
喜欢所以热爱,坚持干货分享,欢迎订阅我的微信公众号
呐,请我吃辣条