クラスラベルとして文字列のリストがあり、それらをテンソルに変換したいという分類問題に取り組んでいます。これまで、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.
_
誰かが別のアプローチを提案できますか?ありがとう
残念ながら、今はできません。そして、それは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
を格納することをお勧めします。