3

私は PyTorch が初めてで、非常に単純なことだと思いますが、多くの困難を抱えています。

私は関数を持っていて、sin(x) * cos(x) + x^2いつでもその関数の導関数を取得したいと考えています。

これを一点で行うと、次のように完全に機能します

x = torch.autograd.Variable(torch.Tensor([4]),requires_grad=True)
y = torch.sin(x)*torch.cos(x)+torch.pow(x,2)
y.backward()
print(x.grad) # outputs tensor([7.8545])

ただし、ベクトルを x として渡し、導関数を要素ごとに評価できるようにしたいと考えています。例えば:

Input: [4., 4., 4.,]
Output: tensor([7.8545, 7.8545, 7.8545])

しかし、私はこれを機能させることができないようです。

私は単純にやってみました

x = torch.tensor([4., 4., 4., 4.], requires_grad=True)
out = torch.sin(x)*torch.cos(x)+x.pow(2)
out.backward()
print(x.grad)

しかし、「RuntimeError: grad はスカラー出力に対してのみ暗黙的に作成できます」というエラーが表示されます

このコードをベクトル用に調整するにはどうすればよいですか?

前もって感謝します、

4

1 に答える 1