Keras搭建Regressor回归神经网络

写在前面:

刚刚开始学习keras,就在这里记录一下学习过程啦。
本文为使用keras搭建回归神经网络,对numpy的使用也有了一定的了解。

keras文档:https://keras.io/zh/
numpy文档:https://www.numpy.org.cn/index.html
莫烦python bilibili链接:https://space.bilibili.com/243821484/video

一、涉及的numpy函数

1、numpy.random.seed(num):
每次使用相同的num值,可以使得之后随即产生的数列是相同的;
若是不设置该值,则每次生成的随机数因时间的差异而不同。

2、numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
在指定的间隔内返回均匀间隔的数字;返回num均匀分布的样本,在[start, stop]之间。

3、numpy.random.shuffle(X)
打乱样本的顺序。

4、numpy.random.normal(loc=0.0, scale=1.0, size=None)
loc:概率分布的均值。
scale:概率分布的标准差(对应于分布的宽度,scale越大越矮胖,越小越瘦高)。
size:输出的shape,默认为None,只输出一个值。

二、涉及的matplotlib.pyplot函数

1、plt.scatter(X,Y)
画出散点图
2、plt.plot(X,Y)
画出线图
3、plt.show()
显示所画的图

三、代码

1.keras相关导入:

import numpy as np
np.random.seed(666)   
from keras.models import Sequential      #按顺序建立
from keras.layers import Dense           #全连接层
import matplotlib.pyplot as plt          #可视化的模块

2.数据集:

X=np.linspace(-1,1,200)                             #在(-1,1)之间创建共200个数据
np.random.shuffle(X)       
Y=0.5*X + 2 + np.random.normal(0,0.05,(200,))       #weights为0.5   biases为2
plt.scatter(X,Y)
plt.show()

设置训练集和测试集的个数:

X_train,Y_train = X[:160],Y[:160]     #前160个数
X_test,Y_test=X[160:],Y[160:]         #后40个数

3.构建神经网络:

Dense全连接层:
第一层需要定义输入;第二层则将第一层的输出作为输入

model=Sequential()
model.add(Dense(output_dim=1,input_dim=1))        #x和y的dim都是1

损失函数loss function & 优化器optimizer:
loss=‘mse’:mse即mean_squared_error,意为均方误差,也称标准差,可以反映一个数据集的离散程度。
optimizer=‘sgd’:使用随机梯度下降作为优化方法。

model.compile(loss='mse',optimizer='sgd')      

4.训练&测试:

训练:

print('training begin')
for step in range(301):
    cost=model.train_on_batch(X_train,Y_train)  
    if step%100==0:
        print('train cost:',cost)               #每100次输出一下cost

测试:

print('\ntesting begin')
cost=model.evaluate(X_test,Y_test,batch_size=40)
print('test cost:',cost)
W,b=model.layers[0].get_weights()         #get_weight返回这weights和biases这两个参数
print('weights=',W,'\nbiases=',b)

显示结果:

Y_pred = model.predict(X_test)
plt.scatter(X_test,Y_test)
plt.plot(X_test,Y_pred)
plt.show()

四、运行结果

train数据集:

Keras搭建Regressor回归神经网络

test:

Keras搭建Regressor回归神经网络

结果:

依次输出的cost的值:
Keras搭建Regressor回归神经网络
最后结果:
Keras搭建Regressor回归神经网络