code: def test_tcn_tsppl_support_dataloader(self):
      # load
      tsppl_tcn = TSPipeline.load(
          os.path.join(self.resource_path, "tsppl_ckpt/tcn_tsppl_ckpt")
      )
      tsppl_tcn.fit(
          data=train_data_creator,
          validation_data=valid_data_creator,
          epochs=2,
          batch_size=128,
      )
      assert tsppl_tcn._best_config["batch_size"] == 128
      config = tsppl_tcn._best_config
      yhat = tsppl_tcn.predict(data=valid_data_creator, batch_size=16)
      assert tsppl_tcn._best_config["batch_size"] == 16
      assert yhat.shape == (
          1000,
          config["future_seq_len"],
          config["output_feature_num"],
      )
  
      _, smape = tsppl_tcn.evaluate(
          data=valid_data_creator,
          metrics=["mse", "smape"],
          batch_size=64,
      )
      assert tsppl_tcn._best_config["batch_size"] == 64
      assert smape < 100.0
  
imports: import numpy
  from unittest import TestCase
  import pytest
  from bigdl.chronos.utils import LazyImport
  import os
  import pandas
  import numpy
  from bigdl.chronos.data import TSDataset
  from ..None import op_torch, op_inference
label_desc: Use image node_id 4 for calling the TestTSPipeline obj's underlying member method code with example usage: obj.test_tcn_tsppl_support_dataloader() without return types