1

我用 keras 构建了一个人工神经网络,并使用了 GridSearchCV,以便尝试不同的参数,看看哪种组合能给我带来最好的结果。

我想知道,我们通过Dense-module在图层中定义的所有参数是否可以在GridSearchCV中网格化?我确定三个参数“batch_size”、“epochs”和“optimizer”。但是我尝试了激活功能,两天后我的电脑没有完成网格搜索!所以我停止了它,现在我正在寻找关于这个问题的答案。

最后几行的代码如下:

def classifier_builder(optimizer):

    classifier = Sequential()
    classifier.add(Dense(units = 8, kernel_initializer = 'uniform',
    activation = 'relu', input_shape =(11,)))
    classifier.add(Dense(units = 8, kernel_initializer = 'uniform', 
    activation = 'relu'))
    classifier.add(Dense(units = 1, kernel_initializer = 'uniform', 
    activation = 'sigmoid'))
    classifier.compile(optimizer = optimizer,
    loss = 'binary_crossentropy', metrics = ['accuracy'])  
    return classifier

classifier = KerasClassifier(build_fn = classifier_builder)
parameters = {"batch_size":[25, 32, 50],
              'epochs':[100, 500],
              'optimizer':['adam', 'rmsprop']}
grid_search = GridSearchCV(estimator = classifier,
                           param_grid = parameters,
                           scoring = 'accuracy',
                           cv = 10)
grid_search = grid_search.fit(X_train, y_train)

所以我的问题:是否可以像上面对 batch_size 和 epochs 那样提供不同的激活函数和内核初始化器?或者在不同的激活函数之间改变不是一个好主意,因为它每次都会改变神经网络的结构?例如像这样:

def classifier_builder(optimizer,activ_func1,activ_func2):

    classifier = Sequential()
    classifier.add(Dense(units = 8, kernel_initializer = 'uniform',
    activation = activ_func1, input_shape =(11,)))
    classifier.add(Dense(units = 8, kernel_initializer = 'uniform', 
    activation = activ_func1))
    classifier.add(Dense(units = 1, kernel_initializer = 'uniform', 
    activation = activ_func2))
    classifier.compile(optimizer = optimizer,
    loss = 'binary_crossentropy', metrics = ['accuracy'])  
    return classifier

classifier = KerasClassifier(build_fn = classifier_builder)
parameters = {"batch_size":[25, 32, 50],
              'epochs':[100, 500],
              'optimizer':['adam', 'rmsprop']
              'activ_func1':['relu','elu'],
              'activ_func2':['hard_sigmoid','sigmoid','softplus']}

#and the rest of the code is the same

提前非常感谢:)

4

0 回答 0