【发布时间】:2021-08-20 00:56:13
【问题描述】:
我正在尝试将 pandas 数据帧转换为 pytorch 张量以运行 LSTM 模型,但我不断收到以下错误消息,指出存在值错误并且无法确定对象类型“系列”的形状.然后它引用以下代码:
class MicroESDataset(Dataset):
def __init__(self, sequences):
self.sequences = sequences
def __len__(self):
return len(self.sequences)
def __getitem__(self, idx):
sequence, label = self.sequences[idx]
return dict (
sequence=torch.Tensor(sequence.to_numpy()),
label = torch.tensor(label).float ()
)
我是否遗漏了一些非常明显的东西?谢谢
这是确切的错误消息和回溯:
ValueError Traceback (most recent call last)
<ipython-input-46-fb5c7eb803e1> in <module>()
----> 1 for item in data_module.train_dataloader():
2 print(item["sequence"].shape)
3 print(item["label"].shape)
4 # print(item["label"])
5 break
3 frames
/usr/local/lib/python3.7/dist-packages/torch/_utils.py in reraise(self)
427 # have message field
428 raise self.exc_type(message=msg)
--> 429 raise self.exc_type(msg)
430
431
ValueError: Caught ValueError in DataLoader worker process 0.
Original Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/worker.py", line 202, in _worker_loop
data = fetcher.fetch(index)
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
data = [self.dataset[idx] for idx in possibly_batched_index]
File "/usr/local/lib/python3.7/dist-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp>
data = [self.dataset[idx] for idx in possibly_batched_index]
File "<ipython-input-30-36c44aae196d>", line 13, in __getitem__
label = torch.tensor(label).float()
ValueError: 无法确定对象类型“系列”的形状
【问题讨论】:
-
请提供准确的错误信息和完整的回溯。
-
我在 OP 中添加了确切的错误消息和回溯。
-
看起来
label是一个 Series 对象,而 Tensorflow 不知道如何处理它。 -
这能回答你的问题吗? Convert Pandas dataframe to PyTorch tensor?
-
请使用
dataloadersnum_workers=0参数进行调试。