テンソルからの値の取り出し
data属性
テンソルの値を取り出す。
code:tensor_data1.py
import torch as pt
t1 = pt.tensor(1., dtype=pt.int)
t2 = t1.data
print(t2)
print(id(t1))
print(id(t2))
この場合は、取り出し元t1と取り出した値t2は同じ値をもつ。オブジェクトIDから、これらは別のインスタンスであることが確認できる。
code:tensor_data2.py
import torch as pt
t1 = pt.tensor(1., dtype=pt.float, requires_grad=True)
y = t1**3
y.backward()
print('t1:', t1)
print('t1.grad:', t1.grad)
t2 = t1.data
print('t2:', t2)
print('t2.grad:', t2.grad)
勾配をもつテンソルからは、テンソルの値のみが取り出される。
勾配の値やrequirs_gradの設定を持たないことに注意。
grad属性
テンソルが保持する勾配を取り出す。
code:tensor_grad1.py
import torch as pt
t1 = pt.tensor(2., dtype=pt.float, requires_grad=True)
y = t1**3
y.backward()
print('t1:', t1)
print('t1.grad:', t1.grad)
t2 = t1.grad
print('t2:', t2)
item()メソッド
要素を1つしか持たないテンソルの持つ値をビルトイン型の値として取り出すためのメソッド。後の処理でテンソル型であることが邪魔な場合に利用される。
code:tensor_item1.py
import torch as pt
t1 = pt.tensor(2, dtype=pt.int)
x1 = t1.item()
print('t1:', t1)
print('x1:', x1, type(x1))
t2 = pt.tensor(2., dtype=pt.float, requires_grad=True)
x2 = t2.item()
print('t2:', t2)
print('x2:', x2, type(x2))
整数型(pt.intなど)のテンソルは勾配属性をもつことができない。そのため、この例においてt1テンソルの生成時にrequres_grad=Trueを設定していない。
多次元のテンソルであっても、構成要素が1つだけであれば取り出すことができる。