web-dev-qa-db-ja.com

文字列のリストをpytorchのテンソルに変換する方法は?

クラスラベルとして文字列のリストがあり、それらをテンソルに変換したいという分類問題に取り組んでいます。これまで、numpyモジュールが提供する_numpy array_関数を使用して、文字列のリストを_np.array_に変換してみました。

truth = torch.from_numpy(np.array(truths))

しかし、次のエラーが発生します。

_RuntimeError: can't convert a given np.ndarray to a tensor - it has an invalid type. The only supported types are: double, float, int64, int32, and uint8._

誰かが別のアプローチを提案できますか?ありがとう

8
deepayan das

残念ながら、今はできません。そして、それはPyTorchを不器用にするのでそれは良い考えではないと思います。一般的な回避策は、 sklearn を使用して数値型に変換できます。

以下に短い例を示します。

from sklearn import preprocessing
import torch

labels = ['cat', 'dog', 'mouse', 'elephant', 'pandas']
le = preprocessing.LabelEncoder()
targets = le.fit_transform(labels)
# targets: array([0, 1, 2, 3])

targets = torch.as_tensor(targets)
# targets: tensor([0, 1, 2, 3])

真のラベルと変換されたラベル間の変換が必要になる場合があるため、変数leを格納することをお勧めします。

4
Tengerye