2017-09-18 57 views
1

如何自動調整網絡,而不是每次手動調整隱藏層和時代的數量? (使用Keras)如何在Keras中自動微調網絡?

from keras.models import Sequential 
from keras.layers import Dense 
import numpy 

seed = 9 
numpy.random.seed(seed) 

from pandas import read_csv 
filename = 'BBCN.csv' 
dataframe = read_csv(filename) 

array = dataframe.values 
x = array[:,0 : 11] 
y = array[:, 11] 

model = Sequential() 
model.add(Dense(11, input_dim=11, kernel_initializer = 'uniform', z = 'relu')) 
model.add(Dense(8, kernel_initializer = 'uniform', activation = 'relu')) 
model.add(Dense(8, kernel_initializer = 'uniform', activation = 'relu')) 
model.add(Dense(1, kernel_initializer = 'uniform', activation = 'sigmoid'))   

model.compile(loss='binary_crossentropy', optimizer ='adam', metrics = ['accuracy']) 

model.fit(x, y,nb_epoch = 50, batch_size = 10) 

scores = model.evaluate(x,y) 
print("%s, %.2f%%" % (model.metrics_names[1], scores[1]*100)) 

我需要的結果是顯示過程和精度的百分比。

非常感謝!

+0

你到底想要做什麼。 –

+0

只需嘗試學習自動微調的方式,謝謝。 – jjlin

回答

1

您可以從一些超參數的簡單循環開始,並針對某些時期訓練這些參數,然後比較結果。

你也可以看看網格搜索這是一個更系統的方法。基本上你設置了一個函數來創建一個模型,並將它與一組你想要嘗試的超參數和一個值數組一起使用。欲瞭解更多詳情和樣板代碼I recommend this tutorial

+0

如果你真的想要自動完成所有的事情,網格搜索可以成爲解決方案之一。但是這非常耗時,通常當數據集很大或模型複雜時。我自己不喜歡網格搜索。我喜歡自己調整超參數。 –