# Buggy code
def final_fit(self, x_train, y_train, x_test, y_test, trainer_args=None, retrain=False):
    """Final training after found the best architecture.

    Args:
        x_train: A numpy.ndarray of training data.
        y_train: A numpy.ndarray of training targets.
        x_test: A numpy.ndarray of testing data.
        y_test: A numpy.ndarray of testing targets.
        trainer_args: A dictionary containing the parameters of the ModelTrainer constructor.
        retrain: A boolean of whether reinitialize the weights of the model.
    """
    if trainer_args is None:
        trainer_args = {"max_no_improvement_num": 30}

    y_train = self.transform_y(y_train)
    y_test = self.transform_y(y_test)

    train_data = self.data_transformer.transform_train(x_train, y_train)
    test_data = self.data_transformer.transform_test(x_test, y_test)

    self.cnn.final_fit(train_data, test_data, trainer_args, retrain)


# Traceback (RuntimeError)
╒==============================================╕
|               Training model 1               |
╘==============================================╛
Using TensorFlow backend.
Current Epoch:   0%|                             | 0/1 [00:00<?, ? batch/s]Exception ignored in: <bound method tqdm.__del__ of Current Epoch:   0%|                             | 0/1 [07:59<?, ? batch/s]>
Traceback (most recent call last):
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/tqdm/_tqdm.py", line 885, in __del__
self.close()
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/tqdm/_tqdm.py", line 1090, in close
self._decr_instances(self)
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/tqdm/_tqdm.py", line 454, in _decr_instances
cls.monitor.exit()
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/tqdm/_monitor.py", line 52, in exit
self.join()
File "/root/anaconda3/envs/automl-formal/lib/python3.6/threading.py", line 1053, in join
raise RuntimeError("cannot join current thread")
RuntimeError: cannot join current thread
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "/root/anaconda3/envs/automl-formal/lib/python3.6/multiprocessing/pool.py", line 119, in worker
result = (True, func(*args, **kwds))
File "/root/anaconda3/envs/automl-formal/lib/python3.6/multiprocessing/pool.py", line 44, in mapstar
return list(map(*args))
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/autokeras/search.py", line 296, in train
verbose=verbose).train_model(**trainer_args)
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/autokeras/model_trainer.py", line 103, in train_model
self._train()
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/autokeras/model_trainer.py", line 147, in _train
outputs = self.model(inputs)
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/torch/nn/modules/module.py", line 477, in __call__
result = self.forward(*input, **kwargs)
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/autokeras/graph.py", line 610, in forward
temp_tensor = torch_layer(edge_input_tensor)
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/torch/nn/modules/module.py", line 477, in __call__
result = self.forward(*input, **kwargs)
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/torch/nn/modules/batchnorm.py", line 66, in forward
exponential_average_factor, self.eps)
File "/root/anaconda3/envs/automl-formal/lib/python3.6/site-packages/torch/nn/functional.py", line 1254, in batch_norm
training, momentum, eps, torch.backends.cudnn.enabled
RuntimeError: $ Torch: not enough memory: you tried to allocate 0GB. Buy new RAM! at [/pytorch/aten/src/TH/THGeneral.cpp:204]

# Fixed code
def final_fit(self, x_train, y_train, x_test, y_test, trainer_args=None, retrain=False):
    """Final training after found the best architecture.

    Args:
        x_train: A numpy.ndarray of training data.
        y_train: A numpy.ndarray of training targets.
        x_test: A numpy.ndarray of testing data.
        y_test: A numpy.ndarray of testing targets.
        trainer_args: A dictionary containing the parameters of the ModelTrainer constructor.
        retrain: A boolean of whether reinitialize the weights of the model.
    """
    if trainer_args is None:
        trainer_args = {"max_no_improvement_num": 30}

    if len(x_train.shape) != 0 and len(x_train[0].shape) == 3:
        x_train = resize_image_data(x_train, self.resize_height, self.resize_width)
        if x_test is not None:
            x_test = resize_image_data(x_test, self.resize_height, self.resize_width)

    y_train = self.transform_y(y_train)
    y_test = self.transform_y(y_test)

    train_data = self.data_transformer.transform_train(x_train, y_train)
    test_data = self.data_transformer.transform_test(x_test, y_test)

    self.cnn.final_fit(train_data, test_data, trainer_args, retrain)