『Pytorchニューラルネットワーク効率入門チュートリアル』ノート
前にもpytorch入門チュートリアルのノートを書いたことがありますが、久しぶりに自分で書いたのは少し忘れました.今回は公式チュートリアルでは話さなかったことをたくさん話しましたが、覚えておく価値があります.
1、GPU初探
(1)テンソルをGPUに移す:*.Cuda()eg.t=t.cuda()(2)GPUは特定のタスクにのみ適しており、例えば複数の小さなタスクに分解して並列計算できるほか、計算をGPUに移行しても少なからぬオーバーヘッドがあるので、簡単なタスクはそのままCPUで行えばよい
2、Tensor初探
tensorの3つのプロパティ:t.dtype:データ型t.device:デバイス(gpu/cpu)t.layout:デフォルトstrided注意:異なるタイプ/デバイスのtensorは演算できません
3、Numpy arrayをtensorに変換する
(1)デフォルトで入力データをfloat 32(2)(3)(4)は入力データの種類から出力データを推定するタイプ(ここではint 32)もちろん入力時に出力タイプ
4、Reshape
(1)tensorを取得する要素数
(3)flatten扁平は実はt.reshape(1,-1)を先にして、それからt.squeeze()は1の軸を取り除いてtorchが実現したのにすぎない:
ここでは主にaxisの理解が重要である.
この「dim=0」とはどういう意味ですか?dim=0は0軸単位で演算され、0軸単位で演算されるという意味ですか?つまりsumが
演算後の次元すなわちこの軸を取り除いた次元eg.
1、GPU初探
(1)テンソルをGPUに移す:*.Cuda()eg.t=t.cuda()(2)GPUは特定のタスクにのみ適しており、例えば複数の小さなタスクに分解して並列計算できるほか、計算をGPUに移行しても少なからぬオーバーヘッドがあるので、簡単なタスクはそのままCPUで行えばよい
2、Tensor初探
tensorの3つのプロパティ:t.dtype:データ型t.device:デバイス(gpu/cpu)t.layout:デフォルトstrided注意:異なるタイプ/デバイスのtensorは演算できません
3、Numpy arrayをtensorに変換する
data = np.array([1,2,3])
(1)t1 = torch.Tensor(data) #
(2)t2 = torch.tensor(data) #
(3)t3 = torch.as_tensor(data) #
(4)t4 = torch.from_numpy(data) #
(1)デフォルトで入力データをfloat 32(2)(3)(4)は入力データの種類から出力データを推定するタイプ(ここではint 32)もちろん入力時に出力タイプ
t5 = torch.tensor(np.array([1,2,3]), dtype=torch.float64)
を直接設定してもよいが構造関数はこのように設定できないNote:(3)と(4)変換時にポインタをコピーしただけで、つまりメモリを共有し、numpyを変更してもtensorがどの関数を使用するかを変更する?一、通常torchを使用する.tensor()は、エラーが発生しにくい2、性能調整時にtorchを使用する.as_tensor()はなぜtorchを適用しないのか.from_numpy()? numpyデータ型のみを受信するため、他のタイプは受信しません.4、Reshape
(1)tensorを取得する要素数
t.numel()
(2)squeezeとunsqueezetorch.squeeze(a) # a 1 axis
torch.unsqueeze(a,2) # a index=2 axis 1,
(3)flatten扁平は実はt.reshape(1,-1)を先にして、それからt.squeeze()は1の軸を取り除いてtorchが実現したのにすぎない:
torch.flatten(t)
5、Element-wise操作ここでは主にaxisの理解が重要である.
t = torch.tensor([
[1,1,1,1],
[2,2,2,2],
[3,3,3,3]],dtype=int32)
t.sum(dim=0)
out:tensor[6,6,6,6]
この「dim=0」とはどういう意味ですか?dim=0は0軸単位で演算され、0軸単位で演算されるという意味ですか?つまりsumが
[0]+t[1]+t[2]
またはt[0,:]+t[1,:]+t[2,:]
dim=1になった場合、t[:,0]+t[:,1]+t[:,2]+t[:,3]
Note! 演算後の次元すなわちこの軸を取り除いた次元eg.
t.shape=[2,3,4]
ならt.sum(dim=0).shape=[3,4]
この方法でどのように演算したのかを推定してもよい