mat*_*123 2 python machine-learning linear-regression neural-network keras
我一直在尝试使用Keras中的神经网络实现一个简单的线性回归模型,希望了解我们如何在Keras库中工作.不幸的是,我最终得到了一个非常糟糕的模型.这是实施:
from pylab import *
from keras.models import Sequential
from keras.layers import Dense
#Generate dummy data
data = data = linspace(1,2,100).reshape(-1,1)
y = data*5
#Define the model
def 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 model
regr = baseline_model()
regr.fit(data,y,epochs =200,batch_size = 32)
plot(data, regr.predict(data), 'b', data,y, 'k.')
Run Code Online (Sandbox Code Playgroud)
生成的图如下:
有人可以指出上述模型定义中的缺陷(可以确保更好的拟合)吗?
你应该提高优化器的学习率.RMSprop优化器中学习速率的默认值设置为0.001,因此模型需要几百个时期才能收敛到最终解决方案(可能您自己已经注意到损失值缓慢下降,如训练日志中所示).设置学习率导入optimizers模块:
from keras import optimizers
# ...
model.compile(optimizer=optimizers.RMSprop(lr=0.1), loss='mean_squared_error', metrics=['mae'])
Run Code Online (Sandbox Code Playgroud)
任何一个0.01或0.1应该工作正常.在此修改后,您可能不需要训练200个时期的模型.甚至5,10或20个时代也足够了.
另请注意,您正在执行回归任务(即预测实数),并且'accuracy'在执行分类任务时使用度量(即预测离散标签,如图像类别).因此,正如您在上面所看到的,我已将其替换为mae(即平均绝对误差),这也比这里使用的损失值(即均方误差)更易解释.
| 归档时间: |
|
| 查看次数: |
2629 次 |
| 最近记录: |