Keras:损失不断增加

时间:2017-11-22 19:45:54

标签: python tensorflow neural-network deep-learning keras

代码:

import keras
import numpy as np

x = []
y = []

for i in range(1000):
    x.append((i/10.0))
    y.append(2.71828 ** (i/10.0))

x = np.asarray(x)
y = np.asarray(y)
x = x.T
y = y.T

model = keras.models.Sequential()
model.add(keras.layers.Dense(1, input_dim=1, activation='relu'))
model.add(keras.layers.Dense(100, activation='relu'))
model.add(keras.layers.Dense(1))

model.compile(loss='mean_squared_error', optimizer=keras.optimizers.SGD(lr=0.001))
model.fit(x, y, batch_size=1, shuffle=False)

tx = [0.0, 1.0, 10.0]
tx = np.asarray(tx)
tx = tx.T

print(model.predict(tx))

这是一个非常简单的神经网络,它打算映射e ^ x。这是我第一次使用keras,当我运行它时,损失不断增加到无穷大。相反它应该减少。

1 个答案:

答案 0 :(得分:0)

如果损失增加到无穷大,则表明学习率太高。拟合e ^ x的问题,其中x = 100,就像你的情况一样,值的差异将非常大。因此,渐变将非常大,并且更新将同样大,具体取决于您的学习速度。但是,如果您的学习率非常小,那么网络将由那些大型更新主导。这是在深度学习中将值标准化的原因之一。

一个快速的解决方案是只使用前100个值或减小步长。