Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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张量?_Python_Pandas_Dataframe_Pytorch - Fatal编程技术网

Python 将熊猫数据帧转换为PyTorch张量?

Python 将熊猫数据帧转换为PyTorch张量?,python,pandas,dataframe,pytorch,Python,Pandas,Dataframe,Pytorch,我想在熊猫数据帧df上用PyTorch训练一个简单的神经网络 其中一列名为“Target”,它是网络的目标变量。如何使用此数据帧作为PyTorch网络的输入 我试过这个,但不起作用: import pandas as pd import torch.utils.data as data_utils target = pd.DataFrame(df['Target']) train = data_utils.TensorDataset(df, target) train_loader = dat

我想在熊猫数据帧
df
上用PyTorch训练一个简单的神经网络

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

我试过这个,但不起作用:

import pandas as pd
import torch.utils.data as data_utils

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

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

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

将熊猫数据帧转换为PyTorch张量?

将熊猫作为pd导入
进口火炬
随机输入
#创建虚拟目标(浮动值)
targets_data=[random.random()表示范围内的i(10)]
#从目标\u数据创建数据帧
targets\u df=pd.DataFrame(data=targets\u data)
targets_df.columns=['targets']
#从目标创建张量
torch\u张量=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进行测试


我希望这能帮助你,如果你还有任何问题,尽管问吧。:)

也许可以尝试一下,看看它是否能解决您的问题(基于您的示例代码)


只需转换
pandas数据帧->numpy数组->pytorch张量
。这方面的一个例子如下所述:

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兼容)创建自己的数据集。

您可以使用以下函数将任何数据帧或熊猫系列转换为pytorch张量

将熊猫作为pd导入
进口火炬
#确定支持的设备
def get_设备():
如果torch.cuda.U可用():
设备=火炬。设备('cuda:0')
其他:
设备=火炬。设备('cpu')#没有GPU
返回装置
#将df转换为要在pytorch中使用的张量
def df_至_张量(df):
设备=获取设备()
将torch.from_numpy(df.values).float()返回到(设备)
df_张量=df_到_张量(df)
级数张量=df到张量(级数)
您可以直接将属性(numpy数组)传递给数据集构造函数:

将torch.utils.data作为数据导入
#创建np数组
target=df['target'].值
特征=df.drop('Target',轴=1)。值
#传递给数据加载器
列车=数据\实用张力数据集(特征、目标)
火车装载机=数据装载机。数据装载机(火车,批量大小=10,随机播放=True)

注意:您的功能(
df
)还包含目标变量(
df['target']
),即您的网络是“作弊”,因为它可以在输入中看到目标。您需要从功能集中删除此列


我用你的代码写了这个:
train\u target=torch.tensor(train['target'].values)train=torch.tensor(train.drop('target',axis=1.values)train\u tensor=data\u utils.TensorDataset(train,train\u target)train\u loader=data\u utils.DataLoader(dataset=train\u tensor,batch\u size=batch\u size,shuffle=True)
运行神经网络模型时,我得到以下错误:
运行时错误:预期对象的类型为torch.FloaTtensor,但找到参数#4'mat1'的类型为torch.DoubleTensor
您使用的是什么PyTorch版本?版本
0.3.1.
与版本
0.4.0.
有很大不同。您的数据帧看起来如何?最好是更新您的问题,否则将很难重现您的问题。仅就记录而言,在术语上:您不是转换熊猫数据帧,而是转换熊猫系列(您首先强制应用
。值
)数组)。张量是多维的(否则我们称它们为向量和矩阵)。你能从数据帧的一列(系列)中展示3D火炬张量的构造吗?欢迎来到StackOverflow!为了获得良好的响应,请阅读(特别是)相关内容。问题:您的功能(
df
)还包含目标变量(
df['target']
)(即您的网络“作弊”,因为它可以将结果视为输入)您好,感谢您的贡献!和@iacob的答案有什么不同吗?嗨,我必须先把目标和特征转换成torch.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)
#This works for me

target = torch.tensor(df['Targets'].values)
features = torch.tensor(df.drop('Targets', axis = 1).values)

train = data_utils.TensorDataset(features, target)
train_loader = data_utils.DataLoader(train, batch_size=10, shuffle=True)