Pytorch 0.4.0はTensorとVariableクラスのマージを導入しました。
このバージョンの前は、numpy配列からautogradを使用してVariable
を作成したい場合、次のようにします(x
はnumpy配列です)。
x = Variable(torch.from_numpy(x).float(), requires_grad=True)
PyTorchバージョン0.4.0では、 移行ガイド は、autogradを有効にしてTensorを作成する方法を示しています。例では、次のようなことができます。
x = torch.ones(3, 4, requires_grad=True)
また、requires_grad
を既存のテンソルに設定します
existing_tensor.requires_grad_()
エラーを発生させるrequires_grad=True
を使用してTensorを作成するために、次の3つのことを試しました(x
はnumpy配列です)。
最初は
x = FloatTensor(x, requires_grad=True)
エラーを与える
TypeError: new() received an invalid combination of arguments - got
(numpy.ndarray, requires_grad=bool), but expected one of:
* (torch.device device)
* (Tuple of ints size, torch.device device)
didn't match because some of the keywords were incorrect:
requires_grad
* (torch.Storage storage)
* (Tensor other)
* (object data, torch.device device)
didn't match because some of the keywords were incorrect:
requires_grad
第二は行うことです
x = FloatTensor(x)
x.requires_grad()
そして3つ目は
x = torch.from_numpy(x).single()
x.requires_grad()
どちらも2行目に次のエラーをスローします。
TypeError: 'bool' object is not callable
これらのエラーは、私が間違っていることについてのヒントをほとんど与えません。最新バージョンは非常に新しいので、役立つコンテンツをオンラインで見つけるのは困難です。 PyTorch 0.4.0を使用して、できれば1行でnumpy配列からrequires_grad=True
を使用してFloatTensor
を作成するにはどうすればよいですか?
PyTorch 0.4.0を使用して、派手な配列からrequires_grad = TrueでFloatTensorを作成するにはどうすればよいですか?
x
がnumpy配列である場合、この行でトリックを実行できます。
torch.tensor(x, requires_grad=True)
PyTorch 0.4.0でテストした完全な例を以下に示します。
import numpy as np
import torch
x = np.array([1.3, 0.5, 1.9, 2.45])
print('np.array:', x)
t = torch.tensor(x, requires_grad=True)
print('tensor:', t)
print('requires_grad:', t.requires_grad)
これにより、次の出力が得られます。
np.array: [1.3 0.5 1.9 2.45]
tensor: tensor([ 1.3000, 0.5000, 1.9000, 2.4500], dtype=torch.float64)
requires_grad: True
編集:dtype
は、numpy配列の指定されたdtype
によって決定される必要がありますx
。
これがお役に立てば幸いです。