我刚刚开始学习如何使用Python进行编码,如果有人可以向我简要说明如何将原始代码转换为函数,我将不胜感激。
机器学习代码示例:
# create model
model = Sequential()
model.add(Dense(neurons, input_dim=8, kernel_initializer='uniform', activation='linear', kernel_constraint=maxnorm(4)))
model.add(Dropout(0.2))
model.add(Dense(1, kernel_initializer='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# create model
model = KerasClassifier(build_fn=model, epochs=100, batch_size=10, verbose=0)
# define the grid search parameters
neurons = [1, 5]
param_grid = dict(neurons=neurons)
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1, cv=3)
grid_result = grid.fit(X, Y)
# summarize results
print("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))
如果要使用1个或2个函数,应如何从该示例开始?
编辑:
在上面的代码中,我为<#create model>创建了一个函数:
def create_model(neurons=1):
# create model
model = Sequential()
model.add(Dense(neurons, input_dim=8, kernel_initializer='uniform', activation='linear', kernel_constraint=maxnorm(4)))
model.add(Dropout(0.2))
model.add(Dense(1, kernel_initializer='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
然后,我将不得不通过create_model()成<KerasClassifier(build_fn = create_model等...)>
如果我创建下面的另一个函数,是否正确:
def keras_classifier(model):
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
model = KerasClassifier(build_fn=model, epochs=100, batch_size=10, verbose=0)
# define the grid search parameters
neurons = [1, 5]
param_grid = dict(neurons=neurons)
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=-1, cv=3)
grid_result = grid.fit(X, Y)
# summarize results
print("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))
是正确的/可以在另一个函数中调用吗?
因为如果我调用两个函数:
create_model(neurons)
keras_classifier(model)
我收到错误NameError:未定义名称“模型”
有人可以帮忙吗?
我相信您的def功能存在问题:
def create_model(neurons):
....
return model
需要是
def create_model(neurons):
....
return model
缩进在python中非常重要,它们构成了语法的一部分。不要写难看的代码,谢谢:)
是的,您可以将模型传递给函数,然后将其传递给keras分类器的build_fn =命名变量。您放入分类器调用中的东西本身必须是模型对象,因此请执行以下操作:
model = KerasClassifier(build_fn=create_model(), epochs=100, batch_size=10, verbose=0)
为函数创建的模型或传递给函数的模型使用不同的名称有助于跟踪它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句