torch.nn.functional.pad(input, pad, mode=‘constant‘, value=0)
填充Tensor。
填充大小:
填充input的某些維度的填充大小從最后一個維度開始向前描述。?len(pad)2?\left \lfloor \frac{len(pad)}{2} \right \rfloor ?2len(pad)??input的維度將被填充。
例如,只填充輸入張量的最后一個維度,那么pad的形式為:(padding_left, padding_right);要填充輸入張量的最后兩個維度,請使用(padding_left, padding_right, padding_top, padding_bottom);要填充最后3個維度,請使用(padding_left, padding_right, padding_top, padding_bottom, padding_front, padding_back)。
填充模式:
具體請參考 torch.nn.ConstantPad2d, torch.nn.ReflectionPad2d, 和 torch.nn.ReplicationPad2d 了解有關每個填充模式如何工作的具體示例。
對任意維度實現常量填充。復制填充用于填充5D輸入張量的最后3個維度,或4D輸入張量的最后2個維度,或3D輸入張量的最后一個維度。反射填充僅用于填充4D輸入張量的最后2個維度或3D輸入張量的最后一個維度。
使用CUDA后端時,此操作可能會在其不易關閉的向后傳遞中導致不確定行為。請參見背景再現性。
參數
- input (Tensor) – N維Tensor
- pad (tuple) –
- mode – constant、reflect、replicate、circular,默認值:constant
- value – constant填充的填充值,默認值:0
Examples
import torch import torch.nn.functional as Fa = torch.randn(1, 2, 3) a Out[5]: tensor([[[ 0.7564, -1.8093, -0.7655],[-0.2113, 0.0956, 0.8980]]])p = (2, 3) o = F.pad(a, p, "constant", 0)o Out[8]: tensor([[[ 0.0000, 0.0000, 0.7564, -1.8093, -0.7655, 0.0000, 0.0000, 0.0000],[ 0.0000, 0.0000, -0.2113, 0.0956, 0.8980, 0.0000, 0.0000, 0.0000]]]) >>> t4d = torch.empty(3, 3, 4, 2) >>> p1d = (1, 1) # pad last dim by 1 on each side >>> out = F.pad(t4d, p1d, "constant", 0) # effectively zero padding >>> print(out.size()) torch.Size([3, 3, 4, 4]) >>> p2d = (1, 1, 2, 2) # pad last dim by (1, 1) and 2nd to last by (2, 2) >>> out = F.pad(t4d, p2d, "constant", 0) >>> print(out.size()) torch.Size([3, 3, 8, 4]) >>> t4d = torch.empty(3, 3, 4, 2) >>> p3d = (0, 1, 2, 1, 3, 3) # pad by (0, 1), (2, 1), and (3, 3) >>> out = F.pad(t4d, p3d, "constant", 0) >>> print(out.size()) torch.Size([3, 9, 7, 3])總結
以上是生活随笔為你收集整理的torch.nn.functional.pad(input, pad, mode=‘constant‘, value=0)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 303. 区域和检索 - 数组不可变
- 下一篇: torch.gather(input,