Конвертировать Pandas dataframe в тензор PyTorch? - PullRequest
0 голосов
/ 12 мая 2018

Я хочу обучить простую нейронную сеть на 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)

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Может быть, попробуйте это, чтобы увидеть, может ли это решить вашу проблему (на основе вашего примера кода)?

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)
0 голосов
/ 14 марта 2019

Просто конвертируйте 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).

0 голосов
/ 12 мая 2018

Я имею в виду вопрос в заголовке, так как вы не указали ничего другого в тексте, поэтому просто конвертируйте DataFrame в тензор 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.

Надеюсь, это поможет, если у вас возникнут дополнительные вопросы -Просто спроси.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...