Keras для изучения случайной многомерной функции (регрессия)

Я использую 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

Я думаю, что я делаю что-то неправильно в создании сети или выборе другого параметра. Любая помощь приветствуется. Спасибо,


person aram    schedule 07.08.2017    source источник
comment
Отсев с p = 1 означает, что сеть ничего не узнает.   -  person Dr. Snoopy    schedule 07.08.2017
comment
да, это была проблема. Спасибо.   -  person aram    schedule 08.08.2017


Ответы (1)


Входные данные для Dropout представляют собой долю отбрасываемых единиц ввода (см. здесь). Таким образом, делая

model.add(Dropout(dropout))

с dropout=1 вы практически выбрасываете все юниты. Вам нужно выбрать dropout строго меньше 1.

person Miriam Farber    schedule 07.08.2017
comment
Спасибо за быстрый ответ. Это решает проблему. Также я понял, что использую metrics=["accuracy"], что в данном случае неверно, поскольку это задача регрессии. - person aram; 08.08.2017