Tarim
Tarim

Reputation: 1

TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType' in implementing ABC

I am implementing artificial bee colony optimization in ANN using [this][1] api. but i am getting this error. This is my code:

def ANN(optimizer = "adam", neurons = 32, batch_size = 32, epochs = 50, activation = "relu", patience =5, loss = 'mse'):

  model = Sequential()
  model.add(Dense(neurons, input_dim=look_back, activation= activation))
  model.add(Dense(neurons, activation= activation))
  model.add(Dense(1))
  model.compile(optimizer = optimizer, loss = loss)
  early_stopping = EarlyStopping(monitor = "loss", patience = patience)
  history = model.fit(x_train, y_train, batch_size = batch_size, epochs = epochs, callbacks = [early_stopping], verbose = 0)
  return model

boundaries = [(0,2), (0,2), (0,2), (0,2), (10,100), (20,50), (3,20)]
def performance(x_train, y_train, x_test, y_test, optimizer = None, activation = None, loss = None, batch_size = None, neurons = None, epochs = None, patience=None):

  model = ANN(optimizer=optimizer, activation= activation, loss=loss, batch_size=batch_size, neurons= neurons, epochs = epochs, patience=patience)

  trainScore = model.evaluate(x_train, y_train, verbose=0)
  print('Train Score: %.2f MSE (%.2f RMSE)' % (trainScore, math.sqrt(trainScore)))
  testScore = model.evaluate(x_test, y_test, verbose=0)
  print('Test Score: %.2f MSE (%.2f RMSE)' % (testScore, math.sqrt(testScore)))
  trainPredict = model.predict(x_train)
  testPredict = model.predict(x_test)
  #calculate mean absolute percent error
  trainMAPE = mean_absolute_error(y_train, trainPredict)
  testMAPE = mean_absolute_error(y_test, testPredict)
    
  return print('testMAPE: %.2f MAPE' % trainMAPE), print('testMAPE: %.2f MAPE' % testMAPE)
writer = pd.ExcelWriter('/content/Scores.xlsx')
for sheetNum in range(1,5):
    dataframe = pd.read_excel('Fri.xlsx',sheet_name='Sheet'+str(sheetNum))
    
    # load the dataset
    dataset = dataframe.values
    dataset = dataset.astype('float32')
    
    
    train_size = int(len(dataset) * 0.48)
    test_size = len(dataset) - train_size
    train, test = dataset[0:train_size, :], dataset[train_size:len(dataset), :]
    
    # reshape into X=t and Y=t+1
    look_back = 10
    x_train, y_train = create_dataset(train, look_back)
    x_test, y_test = create_dataset(test, look_back)
    
  
    
    # normalize the dataset
    scaler = MinMaxScaler(feature_range=(0, 1))
    x_train = scaler.fit_transform(x_train)
    x_test = scaler.fit_transform(x_test)
    abc_obj = abc(performance(x_train, y_train, x_test, y_test), boundaries)
    abc_obj.fit()

    #Get solution obtained after fit() execution:
    solution = abc_obj.get_solution()

This is my error:

TypeError                                 Traceback (most recent call last)
<ipython-input-38-f9098d8d18fc> in <module>()
     23     x_train = scaler.fit_transform(x_train)
     24     x_test = scaler.fit_transform(x_test)
---> 25     abc_obj = abc(performance(x_train, y_train, x_test, y_test), boundaries)
     26     abc_obj.fit()
     27 

2 frames
/usr/local/lib/python3.7/dist-packages/keras/layers/core.py in __init__(self, units, activation, use_bias, kernel_initializer, bias_initializer, kernel_regularizer, bias_regularizer, activity_regularizer, kernel_constraint, bias_constraint, **kwargs)
   1144         activity_regularizer=activity_regularizer, **kwargs)
   1145 
-> 1146     self.units = int(units) if not isinstance(units, int) else units
   1147     self.activation = activations.get(activation)
   1148     self.use_bias = use_bias

TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

can you help me with this, please? I think i am not defining the function "performance" correctly. but I don't understand how can I make it better. [1]: https://pypi.org/project/beecolpy/

Upvotes: 0

Views: 321

Answers (0)

Related Questions