在查看了这个问题:尝试使用 Keras 模拟线性回归之后,我尝试推出自己的示例,仅用于学习目的并培养我的直觉。
我下载了一个简单的数据集并使用一列来预测另一列。数据如下所示:
现在我刚刚创建了一个带有单个单节点线性层的简单 keras 模型,并继续在其上运行梯度下降:
from keras.layers import Input, Dense
from keras.models import Model
inputs = Input(shape=(1,))
preds = Dense(1,activation='linear')(inputs)
model = Model(inputs=inputs,outputs=preds)
sgd=keras.optimizers.SGD()
model.compile(optimizer=sgd ,loss='mse',metrics=['mse'])
model.fit(x,y, batch_size=1, epochs=30, shuffle=False)
像这样运行模型会让我nan
在每个时期都有损失。
所以我决定开始尝试一些东西,如果我使用一个非常小的学习率 sgd=keras.optimizers.SGD(lr=0.0000001)
,我只会得到一个像样的模型:
现在为什么会这样?对于我面临的每个问题,我是否必须像这样手动调整学习率?我在这里做错了吗?这应该是最简单的问题,对吧?
谢谢!