我正在尝试使用 Talos 运行超参数优化。因为我有很多参数要测试,所以我想使用一个“grid_downsample”参数,它将选择所有可能的超参数组合的 30%。但是,当我运行我的代码时,我得到:TypeError: __init__() got an unexpected keyword argument 'grid_downsample'
我在没有“grid_downsample”选项和较少超参数的情况下测试了下面的代码。
#load data
data = pd.read_csv('data.txt', sep="\t", encoding = "latin1")
# split into input (X) and output (y) variables
Y = np.array(data['Y'])
data_bis = data.drop(['Y'], axis = 1)
X = np.array(data_bis)
p = {'activation':['relu'],
'optimizer': ['Nadam'],
'first_hidden_layer': [12],
'second_hidden_layer': [12],
'batch_size': [20],
'epochs': [10,20],
'dropout_rate':[0.0, 0.2]}
def dnn_model(x_train, y_train, x_val, y_val, params):
model = Sequential()
#input layer
model.add(Dense(params['first_hidden_layer'], input_shape=(1024,)))
model.add(Dropout(params['dropout_rate']))
model.add(Activation(params['activation']))
#hidden layer 2
model.add(Dense(params['second_hidden_layer']))
model.add(Dropout(params['dropout_rate']))
model.add(Activation(params['activation']))
# output layer with one node
model.add(Dense(1))
model.add(Activation(params['activation']))
# Compile model
model.compile(loss='binary_crossentropy', optimizer=params['optimizer'], metrics=['accuracy'])
out = model.fit(x_train, y_train,
batch_size=params['batch_size'],
epochs=params['epochs'],
validation_data=[x_val, y_val],
verbose=0)
return out, model
scan_object = ta.Scan(X, Y, model=dnn_model, params=p, experiment_name="test")
reporting = ta.Reporting(scan_object)
report = reporting.data
report.to_csv('./Random_search/dnn/report_talos.txt', sep = '\t')
这段代码运行良好。如果我将 scan_object 作为结尾更改为: scan_object = ta.Scan(X, Y, model=dnn_model, grid_downsample=0.3, params=p, experiment_name="test")
,它会给我错误:TypeError: __init__() got an unexpected keyword argument 'grid_downsample'
虽然我期望结果格式与普通网格搜索相同,但组合更少。我错过了什么?参数的名称是否更改?我在 conda 环境中使用 Talos 0.6.3。谢谢!