この質問を見た後:Kerasを使用して線形回帰をエミュレートすることを試みて、私は勉強の目的で、そして私の直感を発展させるために、自分の例を転がそうとしました。
単純なデータセットをダウンロードし、1つの列を使用して別の列を予測しました。データは次のようになります。
これで、単一の1ノードの線形レイヤーを持つ単純なケラスモデルを作成し、その上で勾配降下法を実行しました。
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)
:
なぜこれが起こっているのですか?私が直面するすべての問題に対して、このように手動で学習率を調整する必要がありますか?ここで何か悪いことをしていますか?これは可能な限り簡単な問題だと思いますよね?
ありがとう!