如何解决将外部定义的函数导入pytorch数据集
我有以下问题。我正在为我的pytorch数据加载器定义数据集类。在该类中,我想在__getitem__
方法中使用一个外部定义的函数。
这是我的意思的例子
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类?
提前谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。