Python 将外部定义的函数导入pytorch数据集
我有以下问题。我正在为pytorch数据加载器定义一个dataset类。在这个类中,我想在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
\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,非常感谢,这很有效!