web-dev-qa-db-fra.com

Convertir Pandas dataframe en tenseur PyTorch?

Je souhaite former un réseau de neurones simple sur PyTorch à l'aide d'une base de données personnelle. Cette base de données est importée d'un fichier Excel et stockée dans df.

Une des colonnes est nommée "Target", et c'est la variable cible du réseau. Comment puis-je utiliser ce cadre de données comme entrée pour le réseau de neurones PyTorch?

J'ai essayé ça, mais ça ne marche pas:

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

Je fais référence à la question dans le titre car vous n'avez pas vraiment spécifié quoi que ce soit dans le texte, convertissez donc simplement le DataFrame en un tenseur de PyTorch.

Sans informations sur vos données, je prends simplement les valeurs flottantes comme exemples de cibles ici.

Convertir Pandas dataframe to PyTorch tensor?

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)

Sortie:

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

Testé avec Pytorch 0.4.0.

J'espère que cela vous aidera si vous avez d'autres questions - il suffit de demander. :)

15
blue-phoenox

Essayez peut-être ceci pour voir s'il peut résoudre votre problème (basé sur votre exemple de code)?

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)
5
Allen

Convertissez simplement le pandas dataframe -> numpy array -> pytorch tensor. Un exemple de ceci est décrit ci-dessous:

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)

Espérons que cela vous aidera à créer vos propres jeux de données en utilisant pytorch (Compatible avec la dernière version de pytorch).

1
Gaurav Shrivastava