Keras 成长之路(一)线性回归

线性回归结果

在这里插入图片描述
程序输出
loss= 0.43877754
loss= 9.832883e-05
loss= 9.82497e-05
loss= 9.8249715e-05
loss= 9.8249715e-05
loss= 9.8249715e-05
loss= 9.8249715e-05

原始结果为 :
k= 0.15
b= -0.14

预测结果为 :
k_predict= 0.14631991
b_predict= -0.13796827

Show me the code

导包

# keras顺序模型
from keras import Sequential
# keras神经网络层
from keras.layers import Dense
# 随机梯度下降法
from keras.optimizers import SGD
# 均方误差损失函数
from keras.losses import MSE
import numpy as np
import matplotlib.pyplot as plt

生成数据

# 创建测试数据
n_samples = 100
k = 0.15
b = -0.14
x_true = np.random.rand(n_samples)
nois = np.random.normal(0, 0.01, size=x_true.shape)
y_true = x_true * k + b + nois

# 绘制原始数据
plt.scatter(x_true, y_true)
plt.show()

创建神经网络进行训练

# 利用keras进行训练
model = Sequential()
# 因为Keras默认会加偏置值,所以这里只需要设置该层有一个神经元即k就行了
model.add(Dense(units=1, input_dim= 1))

# 整合模型
sgd = SGD(lr= 0.1)  # 由于默认学习率比较低,所以适当提高学习率
model.compile(optimizer= sgd, loss= 'mse')

# 定义训练参数并开始训练
MAX_ROUND = 3001

for step in range(MAX_ROUND):
    step_loss = model.train_on_batch(x_true, y_true)
    
    if step % 500 == 0:
        print("loss= ", step_loss)
    
k_predict, b_predict = model.layers[0].get_weights()

print("\n原始结果为 :")
print("k= ", k)
print("b= ", b)

print("\n预测结果为 :")
print("k_predict= ", k_predict[0][0], "\nb_predict= ", b_predict[0])

#绘制原始数据与预测结果的图像
y_predict = model.predict(x_true)
plt.scatter(x_true, y_true, c= "b")
plt.scatter(x_true, y_predict, c= "r")
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值