【问题标题】:Pytorch lightning Datamodule override warning: Signature of method '.setup()' does not match signature of base method in class 'LightningDataModule'Pytorch 闪电数据模块覆盖警告:方法“.setup()”的签名与“LightningDataModule”类中基方法的签名不匹配
【发布时间】:2021-04-12 03:28:58
【问题描述】:

以下是一个正常工作的 Pytorch Lightning DataModule。

import os
from pytorch_lightning import LightningDataModule
import torchvision.datasets as datasets
from torchvision.transforms import transforms
import torch
from torch.utils.data import DataLoader
from Testing.Research.config.paths import mnist_data_download_folder


class PressureDataModule(LightningDataModule):
    def __init__(self, config):        
        super().__init__()
        self._config = config

    def prepare_data(self):
        pass

    def setup(self, stage):
        # transform
        transform = transforms.Compose([transforms.ToTensor()])
        mnist_train_full = datasets.MNIST(mnist_data_download_folder, train=True, download=False, transform=self._transforms)
        mnist_test = datasets.MNIST(mnist_data_download_folder, train=False, download=False, transform=self._transforms)

        # train/val split
        train_size = int(self._config.train_size /
                         (self._config.train_size + self._config.val_size) * len(mnist_train_full))
        val_size = len(mnist_train_full) - train_size
        mnist_train, mnist_val = torch.utils.data.random_split(mnist_train_full, [train_size, val_size])

        # assign to use in dataloaders
        self._train_dataset = mnist_train
        self._val_dataset = mnist_val
        self._test_dataset = mnist_test

    def train_dataloader(self):
        return DataLoader(self._train_dataset, batch_size=self._config.batch_size, num_workers=self._config.num_workers)

    def val_dataloader(self):
        return DataLoader(self._val_dataset, batch_size=self._config.batch_size, num_workers=self._config.num_workers)

    def test_dataloader(self):
        return DataLoader(self._test_dataset, batch_size=self._config.batch_size, num_workers=self._config.num_workers)

Pycharm 不喜欢 setup

方法“PressureDataModule.setup()”的签名不匹配 “LightningDataModule”类中基方法的签名

  1. 如果没有匹配,为什么 Pycharm 哭了?
  2. 是因为参数不同吗?正确的参数数量是多少?

解决这个问题的正确方法是什么?

【问题讨论】:

    标签: python pycharm pytorch pytorch-lightning


    【解决方案1】:

    似乎简单的复制粘贴父方法签名解决了这个问题:

    def setup(self, stage: Optional[str] = None) -> None:
        ...
    

    【讨论】:

      猜你喜欢
      • 2018-01-15
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      相关资源
      最近更新 更多