Keras入门之搭建回归神经网络

Regressor 回归神经网络

参考资料:哔哩哔哩—莫烦python Keras快速搭建神经网络
通俗说也就是实现一个线性回归的数据预测。
以下是莫烦老师视频中的代码,我对一些细节添加了注释以方便阅读和学习。

首先,在一个线性数据附近随机生成一些数据,用于预测该线性关系。
Keras入门之搭建回归神经网络_第1张图片
经过一层神经网络的学习,我们可以得出预测结果和学习过程。
Keras入门之搭建回归神经网络_第2张图片
Keras入门之搭建回归神经网络_第3张图片
以下是完整的运行代码。

import numpy as np
np.random.seed(1337) #for reproducibility
from keras.models import Sequential  #按顺序建立神经网络层
from keras.layers import  Dense      #全连接层
import matplotlib.pyplot as plt   #可视化模块

#create some data
X=np.linspace(-1,1,200)  #np.linspace(start = 0, stop = 100, num = 5) --> [0 25 50 75 100]
np.random.shuffle(X)     #洗牌
Y=0.5*X+2+np.random.normal(0,0.05,(200,))   
#random.normal()是随机生成正态分布 (200,)生成200个Y值
# numpy.random.normal(loc=0.0, scale=1.0, size=None)  size:int or tuple of ints
#plot data  显示数据
plt.scatter(X,Y)
plt.show()

X_train,Y_train = X[:160],Y[:160]  # first 160 data for train
X_test,Y_test=X[160:],Y[160:]      # last 40 data for test

#build a neural network from the 1st layer to the last layer
#一层神经网络
model=Sequential()
model.add(Dense(output_dim=1,input_dim=1))
#在model中增加全连接层(输入和输出的维度个数)--> 一个X对应一个Y
#定义第一层时需要给出input_dimension,定义第二层时,会将第一层的输出自动变为第二层的输入
#再添加一层时,只需指定output_dimension -->  model.add(Dense(output_dim=1,))

#choose loss function and optimizing method (损失函数和优化方法)
model.compile(loss='mse',optimizer='sgd')
# mean_squared_error或mse,也称标准差,可以反应一个数据集的离散程度
# sgd 随机梯度下降法

#training
print('Train_____________________')
for step in range(301):
    cost = model.train_on_batch(X_train,Y_train)  #批训练
    if step%100==0:
        print('train cost:',cost)


#test
print('\nTesting________________')
cost = model.evaluate(X_test,Y_test,batch_size=40)
print('test cost:',cost)
W,b=model.layers[0].get_weights()    #第一层神经网络要学习出的参数
print('Weight=',W,'\nbiase=',b)

#ploting the prediction
Y_pred = model.predict(X_test)
plt.scatter(X_test,Y_test)
plt.plot(X_test,Y_pred)
plt.show()

你可能感兴趣的:(人工智能,keras,神经网络,回归)