【问题标题】:Keras for learning a random multidimensional function(regression)用于学习随机多维函数的 Keras(回归)
【发布时间】:2017-08-08 02:17:07
【问题描述】:

我正在使用 Keras 来学习随机函数的表面。基本上我正在采样一堆点作为训练数据。我正在使用以下代码生成网络。

def create_model(optimizer='adam'):
    model = Sequential()
    units = 100
    dim= 6
    dropout= 1
    ## making the model graph, Stacking layers is done by .add():
    model.add(Dense(units=units, input_dim=dim, activation='sigmoid'))
    model.add(Dropout(dropout))

    model.add(Dense(units=units, activation='sigmoid'))
    model.add(Dropout(dropout))

    model.add(Dense(units=units, activation="sigmoid"))
    model.add(Dropout(dropout))
    model.add(Dense(units=1, activation = 'linear'))

    # optmiser = keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0)
    # optmiser = keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)

    # configure the model's learning process; loss and optimisation etc
    model.compile(loss='mse',
                  optimizer=optimizer, metrics=["accuracy"])

    return model

我在训练期间收到以下日志,

451/667 [===================>..........] - ETA: 0s - loss: nan - acc: 0.0000e+00

我认为我在创建网络或选择不同参数时做错了。任何帮助表示赞赏。 谢谢,

【问题讨论】:

  • Dropout with p = 1 意味着网络不会学到任何东西。
  • 是的,这是个问题。谢谢。

标签: keras regression keras-layer


【解决方案1】:

Dropout 的输入表示要删除的输入单元的比例(请参阅here)。因此,通过做

model.add(Dropout(dropout))

使用dropout=1,您基本上会扔掉所有单元。你需要选择dropout严格小于1。

【讨论】:

  • 感谢您的快速响应。这解决了问题。我还发现我使用的是metrics=["accuracy"],在这种情况下这是错误的,因为它是一个回归任务。
猜你喜欢
  • 2019-05-23
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 2020-03-27
  • 2018-08-28
  • 1970-01-01
相关资源
最近更新 更多