[[433522]] 1 テンソル刈り込み操作- テンソル内の要素を範囲でフィルタリングする
- 勾配クリッピング、つまり勾配の離散性や勾配爆発が発生したときの勾配の処理によく使用されます。
- torch.clamp(input, min, max, out=None) → テンソル: 入力テンソルの各要素を [min, max] の区間にクランプし、結果を新しいテンソルに返します。
2 テンソルインデックスとデータフィルタリング- torch.where(codition,x,y): 条件に従って新しいテンソルを形成するために、x と y から条件を満たす要素を選択します。入力パラメータ condition: 条件制限。条件が満たされた場合は a を選択し、そうでない場合は出力として b を選択します。
- torch.gather(input,dim,index,out=None): 指定された次元のインデックス割り当てに従ってテンソルを出力します。
- torch.inex_select(input, dim, index, out=None): 指定されたインデックスに従って出力テンソルを割り当てます。
- torch.masked_select(input,mask,out=None): マスクに従ってテンソルを出力し、ベクトルとして出力します。
- torch.take(input,indices): 入力を1Dテンソルとして扱い、インデックスに従って出力テンソルを取得します。
- torch.nonzero(input,out=None): ゼロ以外の要素の座標を出力する
- 輸入トーチ
- #トーチ.どこ
- a =トーチ.rand (4, 4)
- b =トーチ.rand (4, 4)
- 印刷(a)
- 印刷(b)
- 出力= torch.where (a > 0.5, a, b)
- 印刷する)
- 印刷("torch.index_select")
- a =トーチ.rand (4, 4)
- 印刷(a)
- 出力= torch.index_select (a, dim = 0 ,
- インデックス= torch.tensor ([0, 3, 2]))
- # dim = 0は列単位、インデックスは行単位
- 出力を印刷します。
- 印刷("torch.gather")
- a = torch.linspace (1, 16, 16).view(4, 4)
- 印刷(a)
- 出力= torch.gather (a, dim = 0 ,
- インデックス= torch.tensor ([[0, 1, 1, 1],
- [0, 1, 2, 2],
- [0, 1, 3, 3]]))
- 印刷する)
- 印刷(out.shape)
- #注: 0 から始まり、0 列目に 0 番目、1 列目に 1 番目、2 列目に 1 番目、3 列目に 1 番目、というようになります。
- # dim = 0 、 out[i, j, k] = input[index[i, j, k], j, k]
- # dim = 1 、 out[i, j, k] = input[i, index[i, j, k], k]
- # dim = 2 、 out[i, j, k] = input[i, j, index[i, j, k]]
- 印刷("torch.masked_index")
- a = torch.linspace (1, 16, 16).view(4, 4)
- マスク= torch.gt (a, 8)
- 印刷(a)
- 印刷(マスク)
- 出力= torch.masked_select (a, マスク)
- 印刷する)
- print("torch.take")
- a = torch.linspace (1, 16, 16).view(4, 4)
- b = torch.take (a、インデックス= torch.tensor ([0, 15, 13, 10]))
- 印刷(b)
- #トーチ.非ゼロ
- print("torch.take")
- a =トーチ.テンソル([[0, 1, 2, 0], [2, 3, 0, 1]])
- 出力= torch.nonzero (a)
- 印刷する)
- #スパース表現
3 テンソルの結合/連結- torch.cat(seq, dim=0, out=None): 既存の次元に従って連結する
- torch.stack(seq, dim=0, out=None): 入力テンソルのシーケンスを新しい次元に沿って連結します。シーケンス内のすべてのテンソルは同じ形状である必要があります。
- print("torch.stack")
- a = torch.linspace (1, 6, 6).view(2, 3)
- b =トーチ.linspace (7, 12, 6).view(2, 3)
- 印刷(a, b)
- 出力= torch.stack ((a, b), dim = 2 )
- 印刷する)
- 印刷(out.shape)
- print(out[:, :, 0])
- print(out[:, :, 1])
4 テンソルスライス- torch.chunk(tensor,chunks,dim=0): 特定の次元に従ってチャンクを均等に分割します (最後のチャンクは平均よりも小さくなる場合があります)
- torch.split(tensor,split_size_or_sections,dim=0): 2番目のパラメータで指定されたリストまたは整数に従って、特定の次元に従ってテンソルを分割します。
5 テンソル変形演算- torch().reshape(入力,形状)
- torch().t(入力): 2Dテンソル転置のみ
- torch().transpose(input, dim0, dim1): 2つの次元を入れ替える
- torch().squeeze(input, dim=None, out=None): サイズが1の次元を削除します
- torch().unbind(tensor,dim=0): 次元を削除する
- torch().unsqueeze(input, dim, out=None): 指定された位置に次元を追加し、最後に dim=-1 を追加します
- torch().flip(input,dims): 指定された次元に沿ってテンソルを反転する
- torch().rot90(input,k,dims): 指定された次元と回転数に従ってテンソルを回転します。
- 輸入トーチ
- a =トーチ.rand (2, 3)
- 印刷(a)
- 出力= torch.reshape (a, (3, 2))
- 印刷する)
- 印刷(a)
- 印刷(torch.flip(a, dims = [2, 1]))
- 印刷(a)
- 印刷(a.shape)
- out = torch.rot90 (a, -1, dims =[0, 2]) #時計回りに90°回転
- 印刷する)
- 印刷(out.shape)
6 テンソルパディング演算 7 テンソルのスペクトル演算(フーリエ変換) |