如何自动调整网络,而不是每次手动调整隐藏层数和历元数? (使用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 :(得分:1)
你可以从一些超参数的简单循环开始,然后用这些参数训练一些时期,然后比较结果。
您还可以查看网格搜索,这是一种更系统的方法。基本上,您设置了一个创建模型的函数,并将其与一组您想要尝试的超参数和一组值一起使用。有关更多详细信息和样板代码I recommend this tutorial。