Keras实现一个简单的Regression回归

来源:互联网 发布:出库软件哪个好 编辑:程序博客网 时间:2024/06/02 05:37

这里写图片描述

linux平台下运行,使用Keras框架,其中构建神经网络很简单,例子中指构造了一层神经网络
通过深度学习,将图中的点回归成线性模型,学习直线的W和b

#import various of packagesimport numpy as npnp.random.seed(1337)from keras.models import Sequentialfrom keras.layers import Denseimport matplotlib.pyplot as plt#create some dataX=np.linspace(-1,1,200)np.random.shuffle(X)//最后训练出的结果W越接近0.5,b越接近2则效果越好Y=0.5*X+2+np.random.normal(0,0.05,(200,))#plot dataplt.scatter(X,Y)plt.show()//前160个数据作为训练样本,用于训练模型X_train,Y_train=X[:160],Y[:160]X_test,Y_test=X[160:],Y[160:]#build a neural networkmodel=Sequential()//Dense为全连接层,设定输入和输出的维度,因为每次输入的是一个点,所以维度为1,输出也是一个点,所以维度也为1.model.add(Dense(output_dim=1,input_dim=1))#choose loss function and optimizer//训练之前,编译,设置随时函数,和优化函数model.compile(loss='mse',optimizer='sgd')#training//训练步骤,300次,每100次返回一个损失值print('Training---------------')for step in range(301)://每次训练batch大小的数据量    cost=model.train_on_batch(X_train,Y_train)    if step%100==0:        print('train cost:',cost)#testprint('\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,'\nbiases=',b)#plotting the prediction//图形化的形式,显示出来Y_pred=model.predict(X_test)plt.scatter(X_test,Y_test)plt.plot(X_test,Y_pred)plt.show()

运行结果:

这里写图片描述
最后训练结果W=0.49222, b=1.99950

阅读全文
0 0
原创粉丝点击