【问题标题】:Parsing CSV into Pytorch tensors将 CSV 解析为 Pytorch 张量
【发布时间】:2019-01-22 07:02:30
【问题描述】:

我有一个 CSV 文件,其中包含除标题行之外的所有数值。尝试构建张量时,出现以下异常:

Traceback (most recent call last):
  File "pytorch.py", line 14, in <module>
    test_tensor = torch.tensor(test)
ValueError: could not determine the shape of object type 'DataFrame'

这是我的代码:

import torch
import dask.dataframe as dd

device = torch.device("cuda:0")

print("Loading CSV...")
test = dd.read_csv("test.csv", encoding = "UTF-8")
train = dd.read_csv("train.csv", encoding = "UTF-8")

print("Converting to Tensor...")
test_tensor = torch.tensor(test)
train_tensor = torch.tensor(train)

使用 pandas 而不是 Dask 进行 CSV 解析会产生相同的错误。我还尝试在对torch.tensor(data) 的调用中指定dtype=torch.float64,但又遇到了同样的错误。

【问题讨论】:

    标签: python pandas pytorch


    【解决方案1】:

    尝试先将其转换为数组:

    test_tensor = torch.Tensor(test.values)
    

    【讨论】:

    • 这样做会导致以下错误: Traceback (last last call last): File "pytorch.py​​", line 11, in test_tensor = torch.tensor(test.values) ValueError:无法将浮点 NaN 转换为整数
    • 即使数据框中有一些 NaN,我也无法在此处收到相同的错误。它来自熊猫(test.values)吗? test.dtypes 是什么?是否有任何 int 列?将它们更改为浮点数可能会有所帮助。
    【解决方案2】:

    我想你只是想念.values

    import torch
    import pandas as pd
    
    train = pd.read_csv('train.csv')
    train_tensor = torch.tensor(train.values)
    

    【讨论】:

      【解决方案3】:

      新版 pandas 强烈推荐使用to_numpy 而不是values

      train_tensor = torch.tensor(train.to_numpy())
      

      【讨论】:

        猜你喜欢
        • 2022-10-17
        • 2019-07-29
        • 2020-08-05
        • 2019-02-21
        • 1970-01-01
        • 1970-01-01
        • 2021-02-09
        • 2021-02-07
        相关资源
        最近更新 更多