2

我正在使用scikit-learn的GridSearchCV來迭代參數空間以調整模型。具體來說,我使用它來測試神經網絡中的不同超參數。網格如下:避免在GridSearchCV中使用某些參數組合

params = {'num_hidden_layers': [0,1,2], 
      'hidden_layer_size': [64,128,256], 
      'activation': ['sigmoid', 'relu', 'tanh']} 

的問題是,我結束了隱藏num_hidden_layers當設置爲0運行冗餘模式。它將運行一個帶有0個隱藏層和64個單元的模型,另一個具有128個單元,另一個具有256個單元。所有這些模型都是相同的,因爲沒有隱藏層。這非常低效,這意味着我需要編寫更多的代碼來消除結果中的冗餘。

有沒有辦法阻止這樣的參數組合,也許通過傳遞一個參數元組?

+0

我應該補充說,這個問題不同於這裏提到的,用戶想跳過將會產生錯誤的「禁止」組合:https://stackoverflow.com/questions/43009566/skip-forbidden-parameter-combinations - 當-使用-gridsearchcv –

回答

3

GridSearchCV允許你傳遞的字典清單PARAMS:

param_grid:字典或詞典

辭典參數列表作爲鍵的名稱(字符串)以及作爲值嘗試的 參數設置的列表或者這樣的詞典的列表 其中c這個列表中的每個字典跨越的網格是 探索。這樣可以搜索任何參數 設置的順序。

因此,您可以指定這些字典爲您的原始字典的某些子字典。因此,你可以避免不相關的組合。

3

sklearn documentation建議兩個參數網格。

所以你可以做這樣的事情:

param_grid = [ 
    {'num_hidden_layers': [1,2], 
     'hidden_layer_size': [64,128,256], 
     'activation': ['sigmoid', 'relu', 'tanh']}, 
    {'num_hidden_layers': [0], 
     'hidden_layer_size': [64], 
     'activation': ['sigmoid', 'relu', 'tanh']} 
    ] 
相關問題