【问题标题】:The model from Keras give me same outputKeras 的模型给了我相同的输出
【发布时间】:2017-03-15 04:12:38
【问题描述】:

我在 Keras 中训练了一个模型,只有密集层。但是,当我尝试预测时,即使值不同,它也会一直给我相同的答案。

import numpy
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Dropout
from keras.layers.embeddings import Embedding
from keras.optimizers import Adam
import pandas as pd
import tensorflow as tf
tf.python.control_flow_ops = tf

df = pd.read_csv('/home/sam/Documents/data.csv')
dfX = df[['Close']]
dfY = df[['Y']]
bobX = dfX.as_matrix()
boby = dfY.as_matrix()

model = Sequential()
model.add(Dense(200, input_dim=1))
model.add(Activation('sigmoid'))
model.add(Dense(75))
model.add(Activation('sigmoid'))
model.add(Dense(10))
model.add(Activation('sigmoid'))
model.add(Dense(1))
adam = Adam(lr=0.1)
model.compile(loss='mse', optimizer= adam)
print(model.summary())

model.fit(bobX, boby, nb_epoch=2500, batch_size=500, verbose=0)

model.predict(np.array([[210.99]]))

【问题讨论】:

    标签: python numpy machine-learning neural-network keras


    【解决方案1】:

    对于亚当来说,你的学习率太高了。实际上,对于我使用过的大多数优化器来说,0.1 太高了。您应该使用 1e-3 或 1e-4 作为学习率。这些通常对我很有效。当您使用如此高的学习率时,模型将无法收敛。根据我的经验,它通常只是解决问题的恒定平均值。

    【讨论】:

    • 我也将它设置为 lr = 0.03,对不起,我是 keras 的新手
    • 1e-3 表示 1*10^-3 = 0.001
    • 另外你可能不需要这么大的批量。使用像 32/64 这样的东西。此外,您可能不需要 2500 个 epoch。当验证的损失停止减少时,您应该观察它的训练并停止它。最后,您可能也不需要 4 层。我会从一个隐藏层开始。
    • 对不起,epoch 的数量是否会影响这个问题,因为我的训练数据集大约是 87000,测试是 45000 张图像,我使用了一个 epoch,但在相同的输出中得到了不同的值
    猜你喜欢
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 2018-08-09
    • 2020-11-15
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多