将Pandas数据帧转换为PyTorch张量?

2024-05-16 01:33:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用个人数据库在PyTorch上训练一个简单的神经网络。此数据库从Excel文件导入并存储在df中。

其中一个列名为"Target",它是网络的目标变量。如何使用此数据帧作为PyTorch神经网络的输入?

我试过,但没用:

target = pd.DataFrame(data = df['Target'])
train = data_utils.Tensordataset(df, target)
train_loader = data_utils.DataLoader(train, batch_size = 10, shuffle = True)

Tags: 文件数据网络数据库target目标dfdata
3条回答

我指的是标题中的问题,因为您没有在文本中真正指定任何其他内容,所以只需将数据帧转换为PyTorch张量。

没有关于您的数据的信息,我只是将浮点值作为示例目标。

将Pandas数据帧转换为PyTorch张量?

import pandas as pd
import torch
import random

# creating dummy targets (float values)
targets_data = [random.random() for i in range(10)]

# creating DataFrame from targets_data
targets_df = pd.DataFrame(data=targets_data)
targets_df.columns = ['targets']

# creating tensor from targets_df 
torch_tensor = torch.tensor(targets_df['targets'].values)

# printing out result
print(torch_tensor)

输出:

tensor([ 0.5827,  0.5881,  0.1543,  0.6815,  0.9400,  0.8683,  0.4289,
         0.5940,  0.6438,  0.7514], dtype=torch.float64)

用Pytorch 0.4.0测试。

我希望这有帮助,如果你有任何进一步的问题-只要问。:)

也许可以试试看它是否可以解决您的问题(基于您的示例代码)?

train_target = torch.tensor(train['Target'].values.astype(np.float32))
train = torch.tensor(train.drop('Target', axis = 1).values.astype(np.float32)) 
train_tensor = data_utils.TensorDataset(train, train_target) 
train_loader = data_utils.DataLoader(dataset = train_tensor, batch_size = batch_size, shuffle = True)

只需转换pandas dataframe -> numpy array -> pytorch tensor。下面介绍一个这样的例子:

import pandas as pd
import numpy as np
import torch

df = pd.read_csv('train.csv')
target = pd.DataFrame(df['target'])
del df['target']
train = data_utils.TensorDataset(torch.Tensor(np.array(df)), torch.Tensor(np.array(target)))
train_loader = data_utils.DataLoader(train, batch_size = 10, shuffle = True)

希望这将帮助您使用pytorch(与最新版本的pytorch兼容)创建自己的数据集。

相关问题 更多 >