keras速度复习-线性回归

线性回归
import keras
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense

#生成随机样本点
x_data=np.random.rand(100)#生成100个随机点,默认范围0-1
noise=np.random.normal(0,0.01,x_data.shape)#范围0-0.01,形状同x_data
y_data=x_data*0.1+0.2+noise#生成Y数据
#显示随机点
plt.scatter(x_data,y_data)#画散点图
plt.show()#显示

#构建一个顺序模型
model=Sequential()
#在模型中添加一个全连接层(输出一维,输入一维)
model.add(Dense(units=1,input_dim=1))
#sgd:随机梯度下降法stochastic gradient descent
#mse:均方误差mean squared error
model.compile(optimizer='sgd',loss='mse')

#训练3001个批次,每次都重复使用x_data,y_data中的数据
for step in range(3001):
    #每次训练一个批次,随机梯度每次都更新(批量梯度要全部扫一次)
    cost=model.train_on_batch(x_data,y_data)
    #每五百个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)

#显示随机点:X坐标,Y坐标
plt.scatter(x_data,y_data)
#显示预测结果:X坐标,Y坐标,颜色red,线粗3
plt.plot(x_data,y_pred,'r-',lw=3)
plt.show()

猜你喜欢

转载自blog.csdn.net/cj1064789374/article/details/88182773