code: def test_folder(self):
      (trn, val, preproc) = vis.images_from_folder(
          datadir="resources/image_data/image_folder",
          data_aug=vis.get_data_aug(horizontal_flip=True),
          classes=["cat", "dog"],
          train_test_names=["train", "valid"],
      )
      model = vis.image_classifier("pretrained_resnet50", trn, val)
      learner = ktrain.get_learner(
          model=model, train_data=trn, val_data=val, batch_size=1
      )
      learner.freeze()
  
      # test weight decay
      self.assertEqual(learner.get_weight_decay(), None)
      learner.set_weight_decay(1e-2)
      self.assertAlmostEqual(learner.get_weight_decay(), 1e-2)
  
      # train
      hist = learner.autofit(1e-3, monitor=VAL_ACC_NAME)
  
      # test train
      self.assertAlmostEqual(max(hist.history["lr"]), 1e-3)
      if max(hist.history[ACC_NAME]) == 0.5:
          raise Exception(
              "unlucky initialization: please run test again"
          )
      self.assertGreater(max(hist.history[ACC_NAME]), 0.8)
  
      # test top_losses
      obs = learner.top_losses(n=1, val_data=val)
      print(obs)
      if obs:
          self.assertIn(
              obs[0][0], list(range(U.nsamples_from_data(val)))
          )
      else:
          self.assertEqual(max(hist.history[VAL_ACC_NAME]), 1)
  
      # test load and save model
      learner.save_model("/tmp/test_model")
      learner.load_model("/tmp/test_model")
  
      # test validate
      cm = learner.validate(val_data=val)
      print(cm)
      for i, row in enumerate(cm):
          self.assertEqual(np.argmax(row), i)
  
      # test predictor
      p = ktrain.get_predictor(learner.model, preproc)
      r = p.predict_folder("resources/image_data/image_folder/train/")
      print(r)
      self.assertEqual(r[0][1], "cat")
      r = p.predict_proba_folder(
          "resources/image_data/image_folder/train/"
      )
      self.assertEqual(np.argmax(r[0][1]), 0)
      r = p.predict_filename(
          "resources/image_data/image_folder/train/cat/cat.11737.jpg"
      )
      self.assertEqual(r, ["cat"])
      r = p.predict_proba_filename(
          "resources/image_data/image_folder/train/cat/cat.11737.jpg"
      )
      self.assertEqual(np.argmax(r), 0)
  
      p.save("/tmp/test_predictor")
      p = ktrain.load_predictor("/tmp/test_predictor")
      r = p.predict_filename(
          "resources/image_data/image_folder/train/cat/cat.11737.jpg"
      )
      self.assertEqual(r, ["cat"])
  
file_path: ktrain/tests/test_imageclassification.py
imports: from unittest import TestCase, main, skip
  import numpy
  import testenv
  import ktrain
  import ktrain.utils
  from ktrain import vision
  from ktrain.imports import ACC_NAME, VAL_ACC_NAME
label_desc: Use image node_id 1 for calling the TestImageClassification obj's underlying member method code with example usage: obj.test_folder() without return types