使用Keras进行简单线性回归

我一直在尝试使用Keras中的神经网络实现一个简单的线性回归模型,希望能理解如何在Keras库中工作。不幸的是,我最终得到的模型非常差。以下是我的实现:

from pylab import *from keras.models import Sequentialfrom keras.layers import Dense#Generate dummy datadata = data = linspace(1,2,100).reshape(-1,1)y = data*5#Define the modeldef baseline_model():   model = Sequential()   model.add(Dense(1, activation = 'linear', input_dim = 1))   model.compile(optimizer = 'rmsprop', loss = 'mean_squared_error', metrics = ['accuracy'])   return model#Use the modelregr = baseline_model()regr.fit(data,y,epochs =200,batch_size = 32)plot(data, regr.predict(data), 'b', data,y, 'k.')

生成的图表如下所示:

Plot

能有人指出上述模型定义中的缺陷(以确保更好的拟合)吗?


回答:

你应该增加优化器的学习率。在RMSprop优化器中的默认学习率值设置为0.001,因此模型需要几百个周期才能收敛到最终解(你可能已经注意到这一点,训练日志显示损失值下降缓慢)。要设置学习率,请导入optimizers模块:

from keras import optimizers# ...model.compile(optimizer=optimizers.RMSprop(lr=0.1), loss='mean_squared_error', metrics=['mae'])

0.010.1中的任何一个都应该可以正常工作。进行此修改后,你可能不需要训练模型200个周期。甚至5个、10个或20个周期可能就足够了。

另外请注意,你正在执行回归任务(即预测实数),而'accuracy'作为指标是用于执行分类任务时(即预测离散标签,如图像的类别)。因此,如上所示,我已将其替换为mae(即平均绝对误差),这也比这里使用的损失值(即均方误差)更易于解释。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注