Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使自定义pytorch数据集的结构与torchvision数据集类似?_Python_Pytorch_Torch - Fatal编程技术网

Python 如何使自定义pytorch数据集的结构与torchvision数据集类似?

Python 如何使自定义pytorch数据集的结构与torchvision数据集类似?,python,pytorch,torch,Python,Pytorch,Torch,我是pytorch的新手,我正在尝试重用一个时尚MNIST CNN()来对我的timeseries数据进行分类。我发现很难理解数据集的结构,因为按照我所能做到的,我得到的东西太简单了。我想这是因为我不太懂OOP。我制作的数据集在我的CNN训练中运行良好,但在试图用它们的代码分析结果时,我陷入了困境 因此,我从两个名为features[4050,1150,6]和targets[4050]的pytorch张量创建了一个数据集: train_dataset = TensorDataset(featur

我是pytorch的新手,我正在尝试重用一个时尚MNIST CNN()来对我的timeseries数据进行分类。我发现很难理解数据集的结构,因为按照我所能做到的,我得到的东西太简单了。我想这是因为我不太懂OOP。我制作的数据集在我的CNN训练中运行良好,但在试图用它们的代码分析结果时,我陷入了困境

因此,我从两个名为features[4050,1150,6]和targets[4050]的pytorch张量创建了一个数据集:

train_dataset = TensorDataset(features,targets) # create your datset
train_dataloader = DataLoader(train_dataset, batch_size=50, shuffle=False) # create your dataloader
print(train_dataset.__dict__.keys()) # list the attributes
我通过检查属性得到这个打印输出

dict_键(['张量])

但在时尚MNIST教程中,他们访问数据的方式如下:

train_set = torchvision.datasets.FashionMNIST(
    root='./data'
    ,train=True
    ,download=True
    ,transform=transforms.Compose([
        transforms.ToTensor()
    ])
)

train_loader = torch.utils.data.DataLoader(train_set, batch_size=1000, shuffle=True)
print(train_set.__dict__.keys()) # list the attributes
通过检查属性可以得到打印输出

dict_键(['root','transform','target_transform','transforms',', “列车”、“数据”、“目标”])

我的数据集可以很好地用于培训,但当我进入本教程后面的分析部分时,他们希望我访问数据集的部分,我得到一个错误:

# Analytics
prediction_loader = torch.utils.data.DataLoader(train_dataset, batch_size=50)
train_preds = get_all_preds(network, prediction_loader)
preds_correct = train_preds.argmax(dim=1).eq(train_dataset.targets).sum().item()

print('total correct:', preds_correct)
print('accuracy:', preds_correct / len(train_set))

---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在里面
4预测加载程序=火炬.utils.data.DataLoader(序列数据集,批量大小=50)
5列预测=获取所有预测(网络、预测装载机)
---->6 preds_correct=train_preds.argmax(dim=1).eq(train_dataset.targets).sum().item()
7.
8打印('总正确:',预正确)
AttributeError:'TensorDataset'对象没有属性'targets'

谁能告诉我这里发生了什么事?这是我在制作数据集时需要改变的吗?还是我可以重写分析代码以访问数据集的正确部分?

相当于
.targets
for
TensorDataset
s将是
train\u dataset.tensors[1]

实现非常简单:

class TensorDataset(数据集[元组[张量,…]):
r“”数据集包装张量。
将通过沿第一维度索引张量来检索每个样本。
论据:
*张量(张量):与第一维度大小相同的张量。
"""
张量:元组[张量,…]
def uuu init uuu(self,*张量:张量)->无:
断言所有(张量[0]。大小(0)=张量。大小(0)表示张量中的张量)
自张量=张量
定义uu获取项目uu(自身,索引):
返回元组(自张量中张量的张量[索引])
定义(自我):
返回self.tensors[0]。大小(0)

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-73-daa87335a92a> in <module>
      4 prediction_loader = torch.utils.data.DataLoader(train_dataset, batch_size=50)
      5 train_preds = get_all_preds(network, prediction_loader)
----> 6 preds_correct = train_preds.argmax(dim=1).eq(train_dataset.targets).sum().item()
      7 
      8 print('total correct:', preds_correct)

AttributeError: 'TensorDataset' object has no attribute 'targets'