Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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类型错误:';传感器&x27;对象是不可编辑的_Python_Python 3.x_Pytorch - Fatal编程技术网

Python PyTorch类型错误:';传感器&x27;对象是不可编辑的

Python PyTorch类型错误:';传感器&x27;对象是不可编辑的,python,python-3.x,pytorch,Python,Python 3.x,Pytorch,我试图在每次迭代中打印一个图像名称。但是,我得到一个错误TypeError:“ToTensor”对象是不可编辑的。请问我要去哪里?非常感谢 from torchvision import datasets import torch.utils.data from torch.utils.data import DataLoader from torchvision import transforms from dataset2 import CellsDataset from torchvisi

我试图在每次迭代中打印一个图像名称。但是,我得到一个错误TypeError:“ToTensor”对象是不可编辑的。请问我要去哪里?非常感谢

from torchvision import datasets
import torch.utils.data
from torch.utils.data import DataLoader
from torchvision import transforms
from dataset2 import CellsDataset
from torchvision import datasets
import torch
import torchvision
import torchvision.transforms as transforms


class ImageFolderWithPaths(datasets.ImageFolder):
    """Custom dataset that includes image file paths. Extends
    torchvision.datasets.ImageFolder
    """

# override the __getitem__ method. this is the method that dataloader calls
def __getitem__(self, index):
    # this is what ImageFolder normally returns 
    original_tuple = super(ImageFolderWithPaths, self).__getitem__(index)
    # the image file path
    path = self.imgs[index][0]
    # make a new tuple that includes original and the path
    tuple_with_path = (original_tuple + (path,))
    return tuple_with_path

# EXAMPLE USAGE:
# instantiate the dataset and dataloader
data_dir = "/Users/nubstech/Documents/GitHub/CellCountingDirectCount/Eddata/"
dataset = ImageFolderWithPaths(data_dir) # our custom dataset
#dataloader = DataLoader(dataset)
transform = transforms.Compose([
    # you can add other transformations in this list
    transforms.ToTensor()
])
dataset = DataLoader(data_dir, transforms.Compose(transforms.ToTensor()))
dataloader = torch.utils.DataLoader(dataset)

# iterate over data
for inputs, labels, paths in dataloader:
    # use the above variables freely
   print(inputs, labels, paths)

回溯消息:

Traceback (most recent call last):
  File "file_location2.py", line 37, in <module>
    dataset = DataLoader(data_dir, transforms.Compose(transforms.ToTensor()))
  File "/Users/nubstech/opt/anaconda3/envs/Cells_Counting/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 219, in __init__
    batch_sampler = BatchSampler(sampler, batch_size, drop_last)
  File "/Users/nubstech/opt/anaconda3/envs/Cells_Counting/lib/python3.7/site-packages/torch/utils/data/sampler.py", line 190, in __init__
    "but got batch_size={}".format(batch_size))
  File "/Users/nubstech/opt/anaconda3/envs/Cells_Counting/lib/python3.7/site-packages/torchvision/transforms/transforms.py", line 66, in __repr__
    for t in self.transforms:
TypeError: 'ToTensor' object is not iterable
回溯(最近一次呼叫最后一次):
文件“File_location2.py”,第37行,在
dataset=DataLoader(数据目录,transforms.Compose(transforms.ToTensor()))
文件“/Users/nubstech/opt/anaconda3/envs/Cells\u Counting/lib/python3.7/site packages/torch/utils/data/dataloader.py”,第219行,在__
批次取样器=批次取样器(取样器、批次大小、最后一次落下)
文件“/Users/nubstech/opt/anaconda3/envs/Cells\u Counting/lib/python3.7/site packages/torch/utils/data/sampler.py”,第190行,在__
“但是得到了批大小={}”。格式(批大小))
文件“/Users/nubstech/opt/anaconda3/envs/Cells\u Counting/lib/python3.7/site packages/torchvision/transforms/transforms.py”,第66行,in\u repr__
对于self.transforms中的t:
TypeError:“ToTensor”对象不可编辑

这是因为
transforms.Compose()
需要是一个列表(可能还接受其他一些iTerable)。问题在于:

dataset = DataLoader(data_dir, transforms.Compose(transforms.ToTensor()))
尝试:


这将创建一个可调用项,您可以在其中传递数据。

这是因为
transforms.Compose()
需要是一个列表(可能还接受其他一些iTerable)。问题在于:

dataset = DataLoader(data_dir, transforms.Compose(transforms.ToTensor()))
尝试:


这将创建一个callable,您可以在其中传递数据。

谢谢您的帮助。我现在得到了以下跟踪错误:ValueError:batch_size应该是正整数值,但是得到了batch_size=Compose(ToTensor())请参见我的编辑。您需要使用数据作为参数调用
转换。我不确定这会在你的代码中出现在哪里我对PyTorch很陌生-你能举个例子说明这是在哪里实现的吗?谢谢你的帮助。我现在得到了以下跟踪错误:ValueError:batch_size应该是正整数值,但是得到了batch_size=Compose(ToTensor())请参见我的编辑。您需要使用数据作为参数调用
转换。我不确定这会在你的代码中出现在哪里我对PyTorch很陌生-你能举个例子说明这是在哪里实现的吗?