PyTorch中toch.tenssorとtoch.Tensorの違いを詳しく説明します。


PyTorchはここ数年大火です。TensorFlowよりPyTorchはPython初心者の方が友好的で、使いやすいです。
        ご存知のように、numpyはPythonにおけるデータ分析の専門的な第三者ライブラリとして、Pythonが保有するMathライブラリよりも速いです。同様に、PyTorchにはnumpyに似たライブラリがあり、Tensorと呼ばれています。Tensorはニューラルネットワーク界のnumpyと自称しています。
一、numpyとTensorの対比
比較項目
numpy
Tensor
同じ点
マルチ次元配列を定義し、スライス、次元変更、数学演算などを行うことができます。
マルチ次元配列を定義し、スライス、次元変更、数学演算などを行うことができます。
違い点
1、生成される配列のタイプはnumpy.ndarayである。
2、darrayをCPUに入れて演算します。
3、導入方式はimport numpy as npで、その後np.array([1,2]を通じて配列を作ります。
4、numpyにはx.type()の使い方がなく、type(x)しか使えません。
1、生成される配列のタイプはtoch.Tensorである。
2、GPUにtensorを入れて加速演算を行います(GPUがあれば)。
3、導入方式はimport touchで、その後toch.tensor(1,2)またはtouch.Tensor(1,2)を通じて配列を構築する。
4、Tensorでは配列の種類を調べてtype(x)を使ってもいいし、x.type()を使ってもいいです。ただし、x.type()の採用がより推奨されています。具体的な原因は以下の通りです。
 例(以下のコードはすべてJupyter Notebookで実行され、かつ通過される):
numpy:

import numpy as np 
x = np.array([1,2]) 
#      ,       , Jupyter Notebook ,    print()              ~ 
x       #array([1, 2])
print(x)     #[1 2]
type(x)     #numpy.ndarray
print(type(x))   #<class 'numpy.ndarray'>
#  :numpy   x.type()   ,    type(x)!!!
Tensor:

import torch    #  ,   import torch,  import Tensor!!!
x = torch.tensor([1,2])
x       #tensor([1, 2])
print(x)     #tensor([1, 2]),  ,   numpy     !
 
type(x)     #torch.Tensor
print(type(x))    #<class 'torch.Tensor'>
x.type()     #'torch.LongTensor',  :numpy       ,   !!!
print(x.type())   #torch.LongTensor,  :numpy       ,   !!!
numpyとTensorの使用には他の違いがあります。本文の重点ではないので、詳しくは述べません。今後は更新するかもしれません。    
二、toch.tensorとtoch.Tensorの違い
        注意深い読者が気づいたかもしれませんが、Tensorを通じて配列を作るには、toch.tenssor([1,2])またはtoch.Tensor([1,2])の2つの方法があります。この2つの方法にはどんな違いがありますか?
        (1)toch.tensorはデータからデータのタイプを推論しますが、toch.Tensorはtoch.empty(ランダムにごみの配列を生成します。詳細は例をご参照ください。)とtoch.tenserの間の一種の混合です。しかし、データが入ると、toch.Tensorはグローバルデフォルトdtype(Float Tensor)を使用する。
        (2)touch.tenssor(1)は固定値1を返し、touch.Tensor(1)は大きさ1のテンソルを返し、初期化された乱数値である。

import torch    #  ,   import torch,  import Tensor!!!
 
x = torch.tensor([1,2])
 
x       #tensor([1, 2])
print(x)     #tensor([1, 2]),  ,   numpy     !
type(x)     #torch.Tensor
print(type(x))    #<class 'torch.Tensor'>
x.type()     #'torch.LongTensor',  :numpy       ,   !!!
print(x.type())   #torch.LongTensor,  :numpy       ,   !!!
 
y = torch.Tensor([1,2])
 
y       #tensor([1., 2.]),  torch.Tensor      dtype(FloatTensor)
print(y)     #tensor([1., 2.]),  torch.Tensor      dtype(FloatTensor)
type(y)     #torch.Tensor
print(type(y))    #<class 'torch.Tensor'>
y.type()     #'torch.FloatTensor',  :          !tensor->LongTensor,Tensor->FloatTensor!!!
print(y.type())   #torch.FloatTensor,  :          !tensor->LongTensor,Tensor->FloatTensor!!!
 
z = torch.empty([1,2]) 
 
z       #      ,    :tensor([[0., 0.]]),tensor([[1.4013e-45, 0.0000e+00]])
print(z)     #      ,    :tensor([[0., 0.]]),tensor([[1.4013e-45, 0.0000e+00]])
type(z)     #torch.Tensor
print(type(z))    #<class 'torch.Tensor'>
z.type()     #'torch.FloatTensor',  :empty()   torch.FloatTensor   torch.LongTensor
print(z.type())   #torch.FloatTensor,  :empty()   torch.FloatTensor   torch.LongTensor
 
#torch.tensor(1)、torch.Tensor(1) torch.empty(1)   :
t1 = torch.tensor(1)
t2 = torch.Tensor(1)
t3 = torch.empty(1)
 
t1       #tensor(1)
print(t1)     #tensor(1)
type(t1)     #torch.Tensor
print(type(t1))   #<class 'torch.Tensor'>
t1.type()     #'torch.LongTenso'
print(t1.type())   #torch.LongTensor
 
t2       #      ,    :tensor([2.8026e-45]),tensor([0.])
print(t2)     #      ,    :tensor([2.8026e-45]),tensor([0.])
type(t2)     #torch.Tensor
print(type(t2))   #<class 'torch.Tensor'>
t2.type()     #'torch.FloatTensor'
print(t2.type())   #torch.FloatTensor
 
t3       #      ,    :tensor([0.]),tensor([1.4013e-45])
print(t3)     #      ,    :tensor([0.]),tensor([1.4013e-45])
type(t3)     #torch.Tensor
print(type(t3))   #<class 'torch.Tensor'>
t3.type()     #'torch.FloatTensor'
print(t3.type())   #torch.FloatTensor
上記で述べたように、Tensorには、x.type()を使用してデータタイプを見ることがより推奨されています。x.type()の出力結果は'toch.LongTensor'または'totch.Float Tensor'であるため、2つの配列の種類の違いが見られます。type(x)を採用すると、一色の出力結果はtoch.Tensorであり、タイプの違いは表現できません。
PyTorchは不思議な道具で、その中のTensorの使い方はnumpyよりずっと豊富です。練習中にまとめて上手になります。
ここでPyTorch中toch.tensorとtoch.Tensorの違いについて詳しく説明した文章を紹介します。PyTorch中toch.tensorとtoch.Tensorの内容は以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。