web-dev-qa-db-ja.com

PandasデータフレームをPyTorchテンソルに変換しますか?

個人のデータベースを使用して、PyTorchで簡単なニューラルネットワークをトレーニングしたいと思います。このデータベースは、Excelファイルからインポートされ、dfに保存されます。

列の1つは"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)
17
M. Fabio

テキストで他に何も実際に指定していないので、タイトルの質問に言及しています。したがって、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でテスト済み。

さらに質問がある場合は、これがお役に立てば幸いです。ただ質問してください。 :)

15
blue-phoenox

たぶんこれを試して、問題を解決できるかどうかを確認してください(サンプルコードに基づいて)?

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

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の最新バージョンと互換性あり)を使用して独自のデータセットを作成するのに役立つことを願っています。

1