亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用帶有各種參數的 GridSearch 進行超參數調整

使用帶有各種參數的 GridSearch 進行超參數調整

慕妹3146593 2023-10-11 22:42:44
我正在對神經網絡進行超參數調整。我嘗試了很多手動調整,但對我一直使用的數據集的預測能力仍然很差。我一直選擇使用 GridSearch 來測試我的模型的所有可能的參數組合。類似的事情是否可能(參見下面的代碼)或者是否有更智能/更好的參數調整方法?代碼能夠運行;當然這需要一些時間,但確實有效。我沒有特別的錯誤,我只是在尋找一些好的見解來知道這是否合適。數據框示例:sequence                                         target     expression-AQSVPWGISRVQAPAAH-NRGLRGSGVKVAVLDTGI-STHPDLNI...   0.00    50.0-AQQVPYGVSQIKAPALH-EQGYTGQNVKVAVIDTGIDSSHPDLKV...   0.46    42.0-AQSVPWGIRRVQAPAAH-NRGLTGSGVKVAVLDTGI-STHPDLNI...   0.34    46.0-AQTVPWGISRVQAPAAH-NRGLTGAGVKVSVLDTGI-STHPDLNI...   0.95    45.0-AQSVPYGVSQIKAPALH-SQGYTGSNVKVAVIDTGIDSSHPDLKV...   0.60    50.0數據形狀:3000行和3840個特征請注意,特征數很高,因為所有這些序列都是一次熱編碼的。代碼:'Hyperparameter Tuning for Neurons, Batch_Size, Epochs and Learning Rate'def build_regressor(n_neurons=1, learning_rate=0.01):    regressor = Sequential()    regressor.add(Dense(n_neurons, activation = 'relu', input_shape = (x_train.shape[1],)))    #regressor.add(Dense(n_neurons, activation = 'relu'))    regressor.add(Dense(units=1))    optimizer = Adam(lr = learning_rate)    regressor.compile(optimizer= optimizer, loss='mean_squared_error',  metrics=['mae','mse'])    return regressor#Create Modelmodel = KerasRegressor(build_fn=build_regressor, verbose=0)# define the grid search parametersbatch_size = [10, 25, 50, 100, 150]epochs = [5, 10, 25, 50]n_neurons = [1, 32, 64, 128, 256, 512]learning_rate = [0.001, 0.01, 0.1, 0.2, 0.3]param_grid = dict(batch_size=batch_size, epochs=epochs, n_neurons=n_neurons, learning_rate = learning_rate)#implement grid_searchgrid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1, cv=3, scoring = 'r2')grid_result = grid.fit(x_train, y_train)# summarize resultsprint("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))means = grid_result.cv_results_['mean_test_score']stds = grid_result.cv_results_['std_test_score']params = grid_result.cv_results_['params']for mean, stdev, param in zip(means, stds, params):    print("%f (%f) with: %r" % (mean, stdev, param))
查看完整描述

2 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

網格搜索 CV 總是給出最優解決方案,但執行時間較長。但是還有一些其他超參數技術,例如 RandomizedSearchCV,它僅在選定的點上迭代,您甚至可以在其中調整迭代,但它并不總是給出最佳解決方案,但它可以節省時間。但你還有其他一些技巧,比如

  1. 超視

  2. TPOT

它的性能比 RandomizedSearchCV 好得多,并且完全有機會給出最佳解決方案。

對于較小的數據集,您可以使用 GridSearchCV,但對于較大的數據集,始終使用 hyperopt 或 TPOT,這比 RandomizedSearchCV 好得多。


查看完整回答
反對 回復 2023-10-11
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

老實說,網格搜索看起來不錯。正如您提到的,沒有錯誤,從我的角度來看,我認為如果您的數據集大小隨著時間的推移而增加并且您無法進行網格搜索,請嘗試查看 RandomizedSearchCV (它隨機選擇超參數的子集并對其進行處理,這與網格搜索不同檢查所有組合)。對于大數據集,GridSearch 在生產環境中有時變得不可行。



查看完整回答
反對 回復 2023-10-11
  • 2 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號