You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决val_dataloader步骤中的‘Module is not callable’错误

解决TypeError: 'module' object is not callable错误(val_dataloader中调用ucf101时)

错误原因

你代码中调用的pytorchvideo.data.ucf101是一个Python模块,而非可实例化的类或可调用函数,直接对模块加括号调用会触发该错误。

解决方案

方法1:直接调用模块内的Ucf101类

将所有pytorchvideo.data.ucf101(替换为pytorchvideo.data.ucf101.Ucf101(,修正后的UCFDataModule代码如下:

class UCFDataModule(pytorch_lightning.LightningDataModule):

  _CLIP_DURATION = 2  # Duration of sampled clip for each video
  _BATCH_SIZE = 8
  _NUM_WORKERS = 8  # Number of parallel processes fetching data
    
  def train_dataloader(self):

    train_dataset = pytorchvideo.data.ucf101.Ucf101(
        data_path = os.path.join(dataset_root_path, "train"),
        clip_sampler = pytorchvideo.data.make_clip_sampler("random", self._CLIP_DURATION),
        transform = train_transform
    )

    return torch.utils.data.DataLoader(
        train_dataset,
        batch_size = self._BATCH_SIZE,
        num_workers = self._NUM_WORKERS,
    )


  def val_dataloader(self):

    val_dataset = pytorchvideo.data.ucf101.Ucf101(
        data_path = os.path.join(dataset_root_path, "val"),
        clip_sampler = pytorchvideo.data.make_clip_sampler("uniform", self._CLIP_DURATION),
        decode_audio = False,
        transform = val_transform
    )

    return torch.utils.data.DataLoader(
        val_dataset,
        batch_size = self._BATCH_SIZE,
        num_workers = self._NUM_WORKERS
    )

  def test_dataloader(self):

    test_dataset = pytorchvideo.data.ucf101.Ucf101(
        data_path = os.path.join(dataset_root_path, "test"),
        clip_sampler = pytorchvideo.data.make_clip_sampler("uniform", self._CLIP_DURATION),
        decode_audio = False,
        transform = val_transform 
    )

    return torch.utils.data.DataLoader(
        test_dataset,
        batch_size = self._BATCH_SIZE,
        num_workers = self._NUM_WORKERS
    )

方法2:提前导入类简化代码

在文件开头添加导入语句:

from pytorchvideo.data.ucf101 import Ucf101

之后三个dataloader函数中直接使用Ucf101(即可,示例:

train_dataset = Ucf101(
    data_path = os.path.join(dataset_root_path, "train"),
    clip_sampler = pytorchvideo.data.make_clip_sampler("random", self._CLIP_DURATION),
    transform = train_transform
)

额外注意事项

确保代码中dataset_root_path、train_transform、val_transform这些变量已正确定义并初始化,避免后续出现未定义相关的错误。

内容的提问来源于stack exchange,提问作者Ninalol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:37:02