Python 将外部定义的函数导入pytorch数据集

Python 将外部定义的函数导入pytorch数据集,python,pytorch,pytorch-dataloader,Python,Pytorch,Pytorch Dataloader,我有以下问题。我正在为pytorch数据加载器定义一个dataset类。在这个类中,我想在\uu getitem\uu方法中使用一个外部定义的函数 这是我的意思的一个例子 import torch from torch.utils.data import Dataset, DataLoader import pandas as pd def readOneElement(df, idx): # some fancy code which returns one element with

我有以下问题。我正在为pytorch数据加载器定义一个dataset类。在这个类中,我想在
\uu getitem\uu
方法中使用一个外部定义的函数

这是我的意思的一个例子

import torch
from torch.utils.data import Dataset, DataLoader
import pandas as pd

def readOneElement(df, idx):
   # some fancy code which returns one element with index i based on full data set df (pandas)
   ...
 


# And here the Dataset class 
class ModelDataset(Dataset):

def __init__(self, dataPath, transform = None):

     def listUniqueExamples(self, df):
         listExamples = df[['criterionId', 'adGroupId', 'campaignId', 'accountId']].drop_duplicates().reset_index();
         return listExamples 
     
     self.transform = transform

     # Load data
     df = pd.read_csv(dataPath + '/trainData.csv')

     # Transform constants to self
     self.df = df
     self.listExamples = listUniqueExamples(self, self.df)
     self.length = len(self.listExamples)

def __len__(self):
     return self.length

def __getitem__(self, idx):
     # Create one example data
     sample = readOneElement(df = self.df, idx = idx) # !!!

     return sample
标有#的线!!!将不起作用,因为函数是在此Dataset对象外部定义的。我得到以下错误

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
 
in 
----> 1 data[20]

in __getitem__(self, idx)
     31     def __getitem__(self, idx):
     32          # Create one example data
---> 33          sample = readOneElement(df = self.df, idx = idx)

NameError: name 'readOneElement' is not defined
如果我在Dataset对象中定义了这个函数(就像我对
listUniqueExamples
函数所做的那样),那么它就可以工作了。然而,在这种情况下,我希望这个函数是外部的

有没有办法将外部函数导入pytorch中的Dataset类


提前谢谢你

请把代码缩小到要点。这似乎是关于Python函数和类的基础知识,而不是关于PyTorch。由于上面的代码预期可以正常工作,您遇到了什么样的错误?谢谢您的提问,我已经分别编辑了问题并添加了错误消息@trsvchnI,我看到您正在使用
jupyter
您是否尝试
重新启动并运行all
来更新堆栈?以前定义的具有旧名称的FUNC可能仍然存在alive@trsvchn,非常感谢,这很有效!