Ошибка значения в байесовской оптимизации

#optimization #neural-network #hyperparameters

#оптимизация #нейронная сеть #гиперпараметры

Вопрос:

Я впервые пытаюсь выполнить байесовскую оптимизацию для нейронной сети и столкнулся с этой ошибкой:

Ошибка значения: Входные данные содержат NaN, бесконечность или значение, слишком большое для dtype(‘float64’).

Я проверил свои входные данные, у меня нет никаких nan или бесконечных значений.

Код для настройки HP является

 def nn_cl_bo(neurons, activation, optimizer, learning_rate, batch_size, layers1, layers2, normalization, dropout, dropout_rate, epochs):  optimizerL = ['Adam', 'RMSprop']  optimizerD= {'Adam':Adam(lr=learning_rate), 'RMSprop':RMSprop(lr=learning_rate)}    activationL = ['linear','relu', 'tanh']  optimizer = optimizerD[optimizerL[round(optimizer)]]  neurons = round(neurons)  activation = activationL[round(activation)]  batch_size = round(batch_size)  epochs = round(epochs)  def nn_cl_fun():  #opt = Adam(lr = learning_rate)  nn = Sequential()  nn.add(SimpleRNN(neurons, input_shape=(25,1), activation=activation))  nn.add(Dense(neurons, activation=activation))  if normalization gt; 0.5:  nn.add(BatchNormalization())  for i in range(layers1):  nn.add(Dense(neurons, activation=activation))  if dropout gt; 0.5:  nn.add(Dropout(dropout_rate, seed=123))  for i in range(layers2):  nn.add(Dense(neurons, activation=activation))  #nn.add(Dropout(0.2))  nn.add(Dense(neurons, activation=activation))  nn.add(Dense(1, activation='linear'))  nn.compile(loss='mse', optimizer=optimizer, metrics=['mse'])  return nn    es = EarlyStopping(monitor='mse', mode='min', verbose=0)  nn = KerasRegressor(build_fn=nn_cl_fun, epochs=epochs, batch_size=batch_size, verbose=0)  kf = KFold(n_splits=5, shuffle=True, random_state=123)  score = cross_val_score(nn, train_x, train_y, scoring='neg_mean_squared_error', cv=kf, fit_params={'callbacks':[es]}).mean()  return score  # Set parameters params_nn ={'neurons': (10, 100),  'activation':(0, 2),  'optimizer':(0,1),  'learning_rate':(0.01, 1),  'batch_size':(200, 500),  'layers1':(1,3),  'layers2':(1,3),  'normalization':(0,1),  'dropout':(0,1),  'dropout_rate':(0,0.3),  'epochs':(20, 50)}  # Run Bayesian Optimization nn_bo = BayesianOptimization(nn_cl_bo, params_nn) nn_bo.maximize(init_points=25, n_iter=4)  

Однако вывод, когда я запускаю приведенный выше код, выглядит следующим образом. Целевой столбец отображается как nan. Не уверен, что это является причиной ошибки значения. Кто-нибудь может помочь мне понять, что это за целевая колонка или почему я привожу сюда нан?

 | iter | target | activa... | batch_... | dropout | dropou... | epochs | layers1 | layers2 | learni... | neurons | normal... | optimizer | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | 1 | nan | 1.224 | 250.7 | 0.4361 | 0.2308 | 28.86 | 1.298 | 1.045 | 0.426 | 31.48 | 0.3377 | 0.9907 | | 2 | nan | 0.4755 | 224.4 | 0.6696 | 0.1864 | 28.23 | 1.932 | 1.237 | 0.08322 | 91.07 | 0.794 | 0.8406 | | 3 | nan | 1.63 | 497.3 | 0.5773 | 0.2441 | 32.64 | 1.055 | 1.908 | 0.1143 | 83.55 | 0.6977 | 0.5653 | ....