2017-08-07 51 views
1

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

我覺得我做錯了什麼在創建網絡或不同參數的選擇。任何幫助表示讚賞。 謝謝,

+0

p = 1的丟失意味着網絡不會學到任何東西。 –

+0

是的,這是一個概率。謝謝。 – aram

回答

1

Dropout的輸入表示輸入單位下降的部分(請參閱here)。因此,通過做

model.add(Dropout(dropout)) 

dropout=1,你基本上扔掉所有的單位。您需要選擇嚴格小於1的dropout

+0

感謝您的快速響應。解決了這個問題。我還發現我正在使用'metrics = [「accuracy」]'在這種情況下是錯誤的,因爲它是一個迴歸任務。 – aram