用于学习随机多维函数的Keras(回归)

时间:2017-08-07 16:02:41

标签: keras regression keras-layer

我正在使用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

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

1 个答案:

答案 0 :(得分:1)

Dropout的输入表示要删除的输入单位的分数(请参阅here)。因此,通过做

model.add(Dropout(dropout))

dropout=1,你基本上扔掉了所有的单位。您需要选择严格小于1的dropout