TORCH.NN.FUNCTIONAL
Convolution functions
conv1d
torch.nn.functional.conv1d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) → Tensor在由多個(gè)輸入平面組成的輸入信號上應(yīng)用一維卷積。
- input – 輸入形狀的張量(minibatch,in_channels,iW)
- weight – 形狀濾(out_channels,in_channels/groups,kW)的波器
-
bias – 形狀(out_channels) 的可選偏差. Default:
None
- stride – 卷積內(nèi)核的步幅●没椋可以是一個(gè)數(shù)字或一個(gè)元素的元組(sW谭溉,)痰娱。默認(rèn)值:1
- padding – 輸入兩側(cè)的隱式填充芽世⌒敝可以是一個(gè)數(shù)字或一個(gè)元素的元組(padW,)苗踪。默認(rèn)值:0
- dilation – 內(nèi)核元素之間的間距颠区。可以是一個(gè)數(shù)字或一個(gè)元素的元組(dW通铲,)毕莱。默認(rèn)值:1
- groups – 將輸入分成幾組,in_channels應(yīng)該被組數(shù)整除测暗。默認(rèn)值:1
>>> filters = torch.randn(33, 16, 3)
>>> inputs = torch.randn(20, 16, 50)
>>> F.conv1d(inputs, filters)
conv2d
torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) → Tensor在由多個(gè)輸入平面組成的輸入圖像上應(yīng)用2D卷積央串。
- input – 輸入形狀的張量(minibatch,in_channels,iH,iW)
- weight – 形狀濾(out_channels,in_channels/groups,kH,kW)的波器
-
bias – 形狀(out_channels) 的可選偏差. Default:
None
- stride – 卷積內(nèi)核的步幅⊥胱模可以是一個(gè)數(shù)字或一個(gè)元素的元組(sH质和,sW,)稚字。默認(rèn)值:1
- padding – 輸入兩側(cè)的隱式填充饲宿。可以是一個(gè)數(shù)字或一個(gè)元素的元組(padH胆描,padW)瘫想。默認(rèn)值:0
- dilation – 內(nèi)核元素之間的間距〔玻可以是一個(gè)數(shù)字或一個(gè)元素的元組(dH国夜,dW)。默認(rèn)值:1
- groups – 將輸入分成幾組短绸,in_channels應(yīng)該被組數(shù)整除车吹。默認(rèn)值:1
>>> # With square kernels and equal stride
>>> filters = torch.randn(8,4,3,3)
>>> inputs = torch.randn(1,4,5,5)
>>> F.conv2d(inputs, filters, padding=1)
conv3d
torch.nn.functional.conv3d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) → Tensor
在由多個(gè)輸入平面組成的輸入圖像上應(yīng)用3D卷積。
- input – 輸入形狀的張量(minibatch,in_channels,iT,iH,iW)
- weight – 形狀濾(out_channels,in_channels/groups,kT,kH,kW*)的波器
-
bias – 形狀(out_channels) 的可選偏差. Default:
None
- stride – 卷積內(nèi)核的步幅醋闭≌裕可以是一個(gè)數(shù)字或一個(gè)元素的元組(sT,sH,sW证逻,)乐埠。默認(rèn)值:1
- padding – 輸入兩側(cè)的隱式填充∏羝螅可以是一個(gè)數(shù)字或一個(gè)元素的元組(padT丈咐,padH,padW)洞拨。默認(rèn)值:0
- dilation – 內(nèi)核元素之間的間距扯罐。可以是一個(gè)數(shù)字或一個(gè)元素的元組(dT烦衣,dH歹河,dW)掩浙。默認(rèn)值:1
- groups – 將輸入分成幾組,in_channels應(yīng)該被組數(shù)整除秸歧。默認(rèn)值:1
>>> filters = torch.randn(33, 16, 3, 3, 3)
>>> inputs = torch.randn(20, 16, 50, 10, 20)
>>> F.conv3d(inputs, filters)
conv_transpose1d
torch.nn.functional.conv_transpose1d(input, weight, bias=None, stride=1, padding=0, output_padding=0, groups=1, dilation=1) → Tensor在由幾個(gè)輸入平面組成的輸入信號上應(yīng)用一維轉(zhuǎn)置卷積算符厨姚,有時(shí)也稱為“反卷積”。
- input – 輸入形狀的張量(minibatch,in_channels,iW)
- weight – 形狀濾(out_channels,in_channels/groups,kW)的波器
-
bias – 形狀(out_channels) 的可選偏差. Default:
None
- stride – 卷積內(nèi)核的步幅键菱∶剑可以是一個(gè)數(shù)字或一個(gè)元素的元組(sW,)经备。默認(rèn)值:1
- padding – dilation * (kernel_size - 1) - padding零填充將添加到輸入中每個(gè)尺寸的兩側(cè)拭抬。可以是一個(gè)數(shù)字或一個(gè)元素的元組(padW侵蒙,)造虎。默認(rèn)值:0
- output_padding – 在輸出形狀的每個(gè)尺寸的一側(cè)添加了附加尺寸》坠耄可以是單個(gè)數(shù)字或元組(out_padW)算凿。默認(rèn)值:0
- groups – 將輸入分成幾組,in_channels應(yīng)該被組數(shù)整除犁功。默認(rèn)值:1
- dilation – 內(nèi)核元素之間的間距氓轰。可以是一個(gè)數(shù)字或一個(gè)元素的元組(dW浸卦,)署鸡。默認(rèn)值:1
>>> inputs = torch.randn(20, 16, 50)
>>> weights = torch.randn(16, 33, 5)
>>> F.conv_transpose1d(inputs, weights)
conv_transpose2d
torch.nn.functional.conv_transpose2d(input, weight, bias=None, stride=1, padding=0, output_padding=0, groups=1, dilation=1) → Tensor在由幾個(gè)輸入平面組成的輸入圖像上應(yīng)用二維轉(zhuǎn)置卷積運(yùn)算符,有時(shí)也稱為“反卷積”限嫌。
- input – 輸入形狀的張量(minibatch,in_channels,iH,iW*)
- weight – 形狀濾(out_channels,in_channels/groups,kH,kW*)的波器
-
bias – 形狀(out_channels) 的可選偏差. Default:
None
- stride – 卷積內(nèi)核的步幅储玫。可以是一個(gè)數(shù)字或一個(gè)元素的元組(sH萤皂,sW)。默認(rèn)值:1
- padding – dilation * (kernel_size - 1) - padding零填充將添加到輸入中每個(gè)尺寸的兩側(cè)匣椰●晌酰可以是一個(gè)數(shù)字或一個(gè)元素的元組(padH,padW)禽笑。默認(rèn)值:0
- output_padding – 在輸出形狀的每個(gè)尺寸的一側(cè)添加了附加尺寸入录。可以是單個(gè)數(shù)字或元組(out_padH, out_padW)佳镜。默認(rèn)值:0
- groups – 將輸入分成幾組僚稿,in_channels應(yīng)該被組數(shù)整除。默認(rèn)值:1
- dilation – 內(nèi)核元素之間的間距蟀伸∈赐可以是一個(gè)數(shù)字或一個(gè)元素的元組(dH缅刽,dW)。默認(rèn)值:1
>>> # With square kernels and equal stride
>>> inputs = torch.randn(1, 4, 5, 5)
>>> weights = torch.randn(4, 8, 3, 3)
>>> F.conv_transpose2d(inputs, weights, padding=1)
conv_transpose3d
torch.nn.functional.conv_transpose3d(input, weight, bias=None, stride=1, padding=0, output_padding=0, groups=1, dilation=1) → Tensor在由多個(gè)輸入平面組成的輸入圖像上應(yīng)用3D轉(zhuǎn)置卷積運(yùn)算符蠢络,有時(shí)也稱為“反卷積”
- input – 輸入形狀的張量(minibatch,in_channels,iT,iH,iW)
- weight – 形狀濾(out_channels,in_channels/groups,kT,kH,kW*)的波器
-
bias – 形狀(out_channels) 的可選偏差. Default:
None
- stride – 卷積內(nèi)核的步幅衰猛。可以是一個(gè)數(shù)字或一個(gè)元素的元組(sT, sH刹孔,sW)啡省。默認(rèn)值:1
- padding – dilation * (kernel_size - 1) - padding零填充將添加到輸入中每個(gè)尺寸的兩側(cè)∷柘迹可以是一個(gè)數(shù)字或一個(gè)元素的元組(padT, padH卦睹,padW)。默認(rèn)值:0
- output_padding – 在輸出形狀的每個(gè)尺寸的一側(cè)添加了附加尺寸方库〗嵝颍可以是單個(gè)數(shù)字或元組(out_padT, out_padH, out_padW)。默認(rèn)值:0
- groups – 將輸入分成幾組薪捍,in_channels應(yīng)該被組數(shù)整除笼痹。默認(rèn)值:1
- dilation – 內(nèi)核元素之間的間距±掖可以是一個(gè)數(shù)字或一個(gè)元素的元組(dT, dH凳干,dW)。默認(rèn)值:1
>>> inputs = torch.randn(20, 16, 50, 10, 20)
>>> weights = torch.randn(16, 33, 3, 3, 3)
>>> F.conv_transpose3d(inputs, weights)
unfold
torch.nn.functional.unfold(input, kernel_size, dilation=1, padding=0, stride=1)從批處理輸入張量中提取滑動(dòng)局部塊被济。
fold
torch.nn.functional.fold(input, output_size, kernel_size, dilation=1, padding=0, stride=1)將一系列滑動(dòng)局部塊組合成一個(gè)大型的張量救赐。
Pooling functions
avg_pool1d
torch.nn.functional.avg_pool1d(input, kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True) → Tensor在由多個(gè)輸入平面組成的輸入信號上應(yīng)用一維平均池。
- input – 輸入形狀的張量(minibatch,in_channels,iW)
- kernel_size –窗口的大小只磷【酰可以是單個(gè)數(shù)字或元組 (kW,)
-
stride – 窗戶的步幅∨プ罚可以是單個(gè)數(shù)字或元組(sW预厌,)。 Default:
kernel_size
- padding – 輸入兩側(cè)的隱式零填充元媚≡矗可以是單個(gè)數(shù)字或元組(padW,)刊棕。Default: 0
- ceil_mode – 為True時(shí)炭晒,將使用ceil而不是floor來計(jì)算輸出形狀。默認(rèn)值:False
- count_include_pad –當(dāng)為True時(shí)甥角,將在平均計(jì)算中包括零填充网严。默認(rèn)值:True
>>> # pool of square window of size=3, stride=2
>>> input = torch.tensor([[[1, 2, 3, 4, 5, 6, 7]]], dtype=torch.float32)
>>> F.avg_pool1d(input, kernel_size=3, stride=2)
tensor([[[ 2., 4., 6.]]])
avg_pool2d
torch.nn.functional.avg_pool2d(input, kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True, divisor_override=None) → Tensor:在kH×kW區(qū)域中按步長sH×sW步長應(yīng)用2D平均池運(yùn)算。輸出要素的數(shù)量等于輸入平面的數(shù)量嗤无。
- input – 輸入形狀的張量(minibatch,in_channels震束,iH,iW)
- kernel_size –窗口的大小怜庸。可以是單個(gè)數(shù)字或元組 (kH,kW)
-
stride – 窗戶的步幅驴一⌒荽疲可以是單個(gè)數(shù)字或元組(sH,sW)肝断。 Default:
kernel_size
- padding – 輸入兩側(cè)的隱式零填充杈曲。可以是單個(gè)數(shù)字或元組(padH胸懈,padW)担扑。Default: 0
- ceil_mode – 為True時(shí),將使用ceil而不是floor來計(jì)算輸出形狀趣钱。默認(rèn)值:False
- count_include_pad –當(dāng)為True時(shí)涌献,將在平均計(jì)算中包括零填充。默認(rèn)值:True
- divisor_override – 如果指定首有,它將用作除數(shù)燕垃,否則將使用池化區(qū)域的大小。默認(rèn)值:None
avg_pool3d
torch.nn.functional.avg_pool3d(input, kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True, divisor_override=None) → Tensor通過步長sT×sH×sW step,在kT×kH×kW區(qū)域中應(yīng)用3D平均池操作井联。輸出要素的數(shù)量等于input planes/sT卜壕。
- input – 輸入形狀的張量(minibatch,in_channels,iT x iH,iW)
- kernel_size –窗口的大小烙常≈嵘樱可以是單個(gè)數(shù)字或元組 (kT, kH,kW)
-
stride – 窗戶的步幅〔显啵可以是單個(gè)數(shù)字或元組(sT, sH侦副,sW)。 Default:
kernel_size
- padding – 輸入兩側(cè)的隱式零填充驼鞭∏匮保可以是單個(gè)數(shù)字或元組(padT, padH,padW)挣棕。Default: 0
- ceil_mode – 為True時(shí)汇竭,將使用ceil而不是floor來計(jì)算輸出形狀。默認(rèn)值:False
- count_include_pad –當(dāng)為True時(shí),將在平均計(jì)算中包括零填充黍瞧。默認(rèn)值:True
- divisor_override – 如果指定匾嘱,它將用作除數(shù),否則將使用池化區(qū)域的大小廓握。默認(rèn)值:None
max_pool1d
torch.nn.functional.max_pool1d(*args, **kwargs)在由多個(gè)輸入平面組成的輸入信號上應(yīng)用一維最大池化。
max_pool2d
torch.nn.functional.max_pool2d(*args, **kwargs)在由多個(gè)輸入平面組成的輸入信號上應(yīng)用2D最大合并。
max_pool3d
torch.nn.functional.max_pool3d(*args, **kwargs)在由多個(gè)輸入平面組成的輸入信號上應(yīng)用3D最大池化偿枕。
max_unpool1d
torch.nn.functional.max_unpool1d(input, indices, kernel_size, stride=None, padding=0, output_size=None)計(jì)算MaxPool1d的局部逆璧瞬。
max_unpool2d
torch.nn.functional.max_unpool2d(input, indices, kernel_size, stride=None, padding=0, output_size=None)計(jì)算MaxPool2d的局部逆。
max_unpool3d
torch.nn.functional.max_unpool3d(input, indices, kernel_size, stride=None, padding=0, output_size=None)計(jì)算MaxPool3d的局部逆渐夸。
lp_pool1d
torch.nn.functional.lp_pool1d(input, norm_type, kernel_size, stride=None, ceil_mode=False)在由多個(gè)輸入平面組成的輸入信號上應(yīng)用一維冪平均池嗤锉。如果p的冪的所有輸入的總和為零,則梯度也設(shè)置為零墓塌。
lp_pool2d
torch.nn.functional.lp_pool2d(input, norm_type, kernel_size, stride=None, ceil_mode=False)在由多個(gè)輸入平面組成的輸入信號上應(yīng)用2D功率平均池瘟忱。如果p的冪的所有輸入的總和為零,則梯度也設(shè)置為零苫幢。
adaptive_max_pool1d
torch.nn.functional.adaptive_max_pool1d(*args, **kwargs)在由多個(gè)輸入平面組成的輸入信號上應(yīng)用一維自適應(yīng)最大池化访诱。
- output_size – 目標(biāo)輸出尺寸 (single integer)
- return_indices – 是否返回池索引。默認(rèn)值:False
adaptive_max_pool2d
torch.nn.functional.adaptive_max_pool2d(*args, **kwargs)在由多個(gè)輸入平面組成的輸入信號上應(yīng)用2D自適應(yīng)最大池化韩肝。
- output_size – 目標(biāo)輸出大写ゲ恕(單整數(shù)或雙整數(shù)元組)
- return_indices – 是否返回池索引。默認(rèn)值:False
adaptive_max_pool3d
torch.nn.functional.adaptive_max_pool3d(*args, **kwargs)在由多個(gè)輸入平面組成的輸入信號上應(yīng)用3D自適應(yīng)最大池化哀峻。
- output_size – 目標(biāo)輸出大形邢唷(單整數(shù)或三整數(shù)元組)
- return_indices – 是否返回池索引。默認(rèn)值:False
adaptive_avg_pool1d
torch.nn.functional.adaptive_avg_pool1d(input, output_size) → Tensor在由多個(gè)輸入平面組成的輸入信號上應(yīng)用一維自適應(yīng)平均池剩蟀。
output_size – 目標(biāo)輸出大写呋取(單個(gè)整數(shù))
adaptive_avg_pool2d
torch.nn.functional.adaptive_avg_pool2d(input, output_size)在由多個(gè)輸入平面組成的輸入信號上應(yīng)用2D自適應(yīng)平均池。
output_size – 目標(biāo)輸出大杏骺酢(單整數(shù)或雙整數(shù)元組)
adaptive_avg_pool3d
torch.nn.functional.adaptive_avg_pool3d(input, output_size)在由多個(gè)輸入平面組成的輸入信號上應(yīng)用3D自適應(yīng)平均池生逸。
output_size – 目標(biāo)輸出大小(單整數(shù)或三整數(shù)元組)
Non-linear activation functions
threshold
torch.nn.functional.threshold(input, threshold, value, inplace=False)設(shè)置輸入張量的每個(gè)元素的閾值且预。
torch.nn.functional.threshold_(input, threshold, value) → Tensor
relu
torch.nn.functional.relu(input, inplace=False) → Tensor按元素應(yīng)用整流線性單位函數(shù)槽袄。有關(guān)更多詳細(xì)信息,請參見ReLU锋谐。
torch.nn.functional.relu_(input) → Tensor
hardtanh
torch.nn.functional.hardtanh(input, min_val=-1., max_val=1., inplace=False) → Tensor按元素應(yīng)用HardTanh函數(shù)遍尺。有關(guān)更多詳細(xì)信息,請參見Hardtanh涮拗。
torch.nn.functional.hardtanh_(input, min_val=-1., max_val=1.) → Tensor
relu6
torch.nn.functional.relu6(input, inplace=False) → Tensor應(yīng)用逐元素函數(shù)\ReLU6(x)= min(max(0乾戏,x),6)三热。
elu
torch.nn.functional.elu(input, alpha=1.0, inplace=False) 逐元素ELU(x)=max(0,x)+min(0,α?(exp(x)?1)) .
torch.nn.functional.elu_(input, alpha=1.) → Tensor
selu
torch.nn.functional.selu(input, inplace=False) → Tensor:逐元素 SELU(x)=scale?(max(0,x)+min(0,α?(exp(x)?1))) , withα=1.6732632423543772848170429916717 并且 scale=1.0507009873554804934193349852946
celu
torch.nn.functional.celu(input, alpha=1., inplace=False) → Tensor:逐元素CELU(x)=max(0,x)+min(0,α?(exp(x/α)?1)) .
leaky_relu
torch.nn.functional.leaky_relu(input, negative_slope=0.01, inplace=False) → Tensor:逐元素LeakyReLU(x)=max(0,x)+negative_slope min(0,x)
torch.nn.functional.leaky_relu_(input, negative_slope=0.01) → Tensor
prelu
torch.nn.functional.prelu(input, weight) → Tensor:逐元素PReLU(x)=max(0,x)+weight?min(0,x) 可學(xué)習(xí)的權(quán)重鼓择。
rrelu
torch.nn.functional.rrelu(input, lower=1./8, upper=1./3, training=False, inplace=False) → Tensor:隨機(jī)的leaky ReLU。
torch.nn.functional.rrelu_(input, lower=1./8, upper=1./3, training=False) → Tensor
glu
torch.nn.functional.glu(input, dim=-1) → Tensor:門控線性單元就漾。計(jì)算:GLU(a,b)=a?σ(b)呐能。其中輸入沿dim分成兩半以形成a和b,σ是sigmoid 型函數(shù),而?是矩陣之間的按元素乘積摆出。
gelu
torch.nn.functional.gelu(input) → Tensor:GeLU(x)=x?Φ(x),其中Φ(x)是高斯分布的累積分布函數(shù)偎漫。
logsigmoid
torch.nn.functional.logsigmoid(input) → Tensor:LogSigmoid(x_i)=log(1/(1+exp(?x_i)))
hardshrink
torch.nn.functional.hardshrink(input, lambd=0.5) → Tensor:逐個(gè)應(yīng)用硬收縮功能
tanhshrink
torch.nn.functional.tanhshrink(input) → Tensor: Tanhshrink(x)=x?Tanh(x)
softsign
torch.nn.functional.softsign(input) → Tensor:
softplus
torch.nn.functional.softplus(input, beta=1, threshold=20) → Tensor
softmin
torch.nn.functional.softmin(input, dim=None, _stacklevel=3, dtype=None):應(yīng)用softmin函數(shù)爷恳。Softmin(x)=Softmax(?x)有關(guān)數(shù)學(xué)公式,請參見softmax定義象踊。
- input (Tensor) – 輸入
- dim (int) –將計(jì)算softmin的維度(因此温亲,沿著dim的每個(gè)切片的總和為1)。
-
dtype (
torch.dtype
, optional) – 返回張量的所需數(shù)據(jù)類型通危。如果指定铸豁,則在執(zhí)行操作之前將輸入張量強(qiáng)制轉(zhuǎn)換為dtype
。 這對于防止數(shù)據(jù)類型溢出很有用菊碟。默認(rèn)值:None
节芥。
softmax
torch.nn.functional.softmax(input, dim=None, _stacklevel=3, dtype=None):應(yīng)用softmax函數(shù)。Softmax is defined as:
它將應(yīng)用于沿dim的所有切片逆害,并將對其進(jìn)行重新縮放头镊,以使元素位于[0,1]范圍內(nèi)且總和為1魄幕。
- input (Tensor) – 輸入
- dim (int) – 將沿著其計(jì)算softmax的尺寸相艇。
-
dtype (
torch.dtype
, optional) – 返回張量的所需數(shù)據(jù)類型。如果指定纯陨,則在執(zhí)行操作之前將輸入張量強(qiáng)制轉(zhuǎn)換為dtype
坛芽。這對于防止數(shù)據(jù)類型溢出很有用。默認(rèn)值:None
翼抠。
softshrink
torch.nn.functional.softshrink(input, lambd=0.5) → Tensor:逐個(gè)應(yīng)用軟收縮功能
gumbel_softmax
torch.nn.functional.gumbel_softmax(logits, tau=1, hard=False, eps=1e-10, dim=-1):Gumbel-Softmax發(fā)行版(鏈接1鏈接2)中的樣本咙轩,也可以離散化。
- logits – […, num_features] 未標(biāo)準(zhǔn)化的日志概率
- tau – 非負(fù)標(biāo)量尺度
- hard – 如果為True阴颖,則返回的樣本將被離散為一熱向量活喊,但將被區(qū)別為好像是autograd中的軟樣本
- dim (int) – 將沿著其計(jì)算softmax的尺寸。默認(rèn)值:-1量愧。
>>> logits = torch.randn(20, 32)
>>> # Sample soft categorical using reparametrization trick:
>>> F.gumbel_softmax(logits, tau=1, hard=False)
>>> # Sample hard categorical using "Straight-through" trick:
>>> F.gumbel_softmax(logits, tau=1, hard=True)
log_softmax
torch.nn.functional.log_softmax(input, dim=None, _stacklevel=3, dtype=None):應(yīng)用softmax钾菊,后跟對數(shù)。
雖然在數(shù)學(xué)上等效于log(softmax(x))偎肃,但分別執(zhí)行這兩個(gè)操作比較慢煞烫,并且在數(shù)值上不穩(wěn)定。此函數(shù)使用替代公式來正確計(jì)算輸出和漸變累颂。
- input (Tensor) – 輸入
- dim (int) – 將沿其計(jì)算log_softmax的維红竭。
-
dtype (
torch.dtype
, optional) –返回張量的所需數(shù)據(jù)類型。如果指定,則在執(zhí)行操作之前將輸入張量強(qiáng)制轉(zhuǎn)換為dtype茵宪。這對于防止數(shù)據(jù)類型溢出很有用。默認(rèn)值:None瘦棋。
tanh
torch.nn.functional.tanh(input) → Tensor
sigmoid
torch.nn.functional.sigmoid(input) → Tensor
Normalization functions
batch_norm
torch.nn.functional.batch_norm(input, running_mean, running_var, weight=None, bias=None, training=False, momentum=0.1, eps=1e-05)對一批數(shù)據(jù)中的每個(gè)通道應(yīng)用批標(biāo)準(zhǔn)化稀火。
instance_norm
torch.nn.functional.instance_norm(input, running_mean=None, running_var=None, weight=None, bias=None, use_input_stats=True, momentum=0.1, eps=1e-05)批量對每個(gè)數(shù)據(jù)樣本中的每個(gè)通道應(yīng)用實(shí)例歸一化
layer_norm
torch.nn.functional.layer_norm(input, normalized_shape, weight=None, bias=None, eps=1e-05)將圖層歸一化應(yīng)用于最后一定數(shù)量的尺寸。
local_response_norm
torch.nn.functional.local_response_norm(input, size, alpha=0.0001, beta=0.75, k=1.0)在由幾個(gè)輸入平面組成的輸入信號上應(yīng)用本地響應(yīng)歸一化赌朋,其中通道占據(jù)第二維凰狞。跨通道應(yīng)用標(biāo)準(zhǔn)化沛慢。
normalize
torch.nn.functional.normalize(input, p=2, dim=1, eps=1e-12, out=None)
執(zhí)行L_p指定尺寸上的輸入標(biāo)準(zhǔn)化赡若。對于大小為
的張量輸入躺苦,每個(gè)
沿維度dim的元素向量v轉(zhuǎn)換為
使用默認(rèn)參數(shù)時(shí)身腻,它沿維使用向量1上的歐幾里得范數(shù)歸一化。
- input – 任何形狀的輸入張量
- p (float) –規(guī)范制定中的指數(shù)值匹厘。默認(rèn)值:2
- dim (int) –減小尺寸嘀趟。默認(rèn)值:1
- eps (float) – 小值,以避免被零除愈诚。默認(rèn)值:1e-12
- out (Tensor, optional) – 輸出張量她按。如果使用out,則此操作將不可微炕柔。
Linear functions
linear
torch.nn.functional.linear(input, weight, bias=None)
對輸入數(shù)據(jù)應(yīng)用線性變換:
bilinear
torch.nn.functional.bilinear(input1, input2, weight, bias=None):對輸入數(shù)據(jù)應(yīng)用雙線性轉(zhuǎn)換:
Dropout functions
dropout
torch.nn.functional.dropout(input, p=0.5, training=True, inplace=False)在訓(xùn)練期間酌泰,使用伯努利分布的樣本以概率p將輸入張量的某些元素隨機(jī)置零。
- p –元素歸零的概率汗唱。默認(rèn)值:0.5
- training – 如果為True宫莱,則應(yīng)用dropout。默認(rèn)值:True
- inplace –如果設(shè)置為True哩罪,將就地執(zhí)行此操作授霸。默認(rèn)值:False
alpha_dropout
torch.nn.functional.alpha_dropout(input, p=0.5, training=False, inplace=False)
dropout2d
torch.nn.functional.dropout2d(input, p=0.5, training=True, inplace=False)隨機(jī)將整個(gè)通道歸零(通道是2D特征圖,例如际插,批輸入中的第i個(gè)樣本的第j個(gè)通道是2D張量input [i碘耳,j ])的輸入張量)。使用伯努利分布的樣本框弛,每個(gè)信道將在每次forward中以概率p獨(dú)立清零辛辨。
- p –通道歸零的概率。默認(rèn)值:0.5
- training – 如果為True,則應(yīng)用dropout斗搞。默認(rèn)值:True
- inplace – 如果設(shè)置為True指攒,將就地執(zhí)行此操作。默認(rèn)值:False
dropout3d
torch.nn.functional.dropout3d(input, p=0.5, training=True, inplace=False)隨機(jī)將整個(gè)通道歸零(通道是3D特征圖僻焚,例如允悦,批輸入中的第i個(gè)樣本的第j個(gè)通道是3D張量input [i,j ])的輸入張量)虑啤。使用伯努利分布的樣本隙弛,每個(gè)信道將在每次forward中以概率p獨(dú)立清零。
- p –通道歸零的概率狞山。默認(rèn)值:0.5
- training – 如果為True全闷,則應(yīng)用dropout。默認(rèn)值:True
- inplace – 如果設(shè)置為True萍启,將就地執(zhí)行此操作总珠。默認(rèn)值:False
Sparse functions
embedding
torch.nn.functional.embedding(input, weight, padding_idx=None, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False)一個(gè)簡單的查找表,用于以固定的字典和大小查找嵌入伊约。
該模塊通常用于使用索引檢索單詞嵌入姚淆。模塊的輸入是索引列表和嵌入矩陣,輸出是相應(yīng)的詞嵌入屡律。
- input (LongTensor) – 包含嵌入張量矩陣的索引的張量
- weight (Tensor) – 行數(shù)等于最大可能索引+ 1腌逢,列數(shù)等于嵌入大小的嵌入矩陣
- padding_idx (int, optional) – 如果指定給定輸出,則在遇到索引時(shí)超埋,將輸出用padding_idx(初始化為零)處的嵌入矢量填充搏讶。
- max_norm (float, optional) – 如果給定,則范數(shù)大于max_norm的每個(gè)嵌入矢量將重新規(guī)范化為范數(shù)max_norm霍殴。注意:這將修改就地重量媒惕。
- norm_type (float, optional) – 為max_norm選項(xiàng)計(jì)算的p范數(shù)的p。默認(rèn)值2来庭。
- scale_grad_by_freq (boolean, optional) – 如果給定的話妒蔚,它將按小批量中單詞頻率的倒數(shù)來縮放梯度。默認(rèn)為False月弛。
- sparse (bool, optional) –如果為True肴盏,則梯度為w.r.t.重量將是一個(gè)稀疏的張量。有關(guān)稀疏漸變的更多詳細(xì)信息帽衙,請參見torch.nn.Embedding下的注釋菜皂。
>>> # a batch of 2 samples of 4 indices each
>>> input = torch.tensor([[1,2,4,5],[4,3,2,9]])
>>> # an embedding matrix containing 10 tensors of size 3
>>> embedding_matrix = torch.rand(10, 3)
>>> F.embedding(input, embedding_matrix)
tensor([[[ 0.8490, 0.9625, 0.6753],
[ 0.9666, 0.7761, 0.6108],
[ 0.6246, 0.9751, 0.3618],
[ 0.4161, 0.2419, 0.7383]],
[[ 0.6246, 0.9751, 0.3618],
[ 0.0237, 0.7794, 0.0528],
[ 0.9666, 0.7761, 0.6108],
[ 0.3385, 0.8612, 0.1867]]])
>>> # example with padding_idx
>>> weights = torch.rand(10, 3)
>>> weights[0, :].zero_()
>>> embedding_matrix = weights
>>> input = torch.tensor([[0,2,0,5]])
>>> F.embedding(input, embedding_matrix, padding_idx=0)
tensor([[[ 0.0000, 0.0000, 0.0000],
[ 0.5609, 0.5384, 0.8720],
[ 0.0000, 0.0000, 0.0000],
[ 0.6262, 0.2438, 0.7471]]])
embedding_bag
torch.nn.functional.embedding_bag(input, weight, offsets=None, max_norm=None, norm_type=2, scale_grad_by_freq=False, mode='mean', sparse=False, per_sample_weights=None)計(jì)算嵌入包的總和,平均值或最大值厉萝,而無需實(shí)例化中間嵌入恍飘。
- input (LongTensor) – 將張量包含索引的袋放入嵌入矩陣
- weight (Tensor) –行數(shù)等于最大可能索引+ 1榨崩,列數(shù)等于嵌入大小的嵌入矩陣
- offsets (LongTensor, optional) – 僅在輸入為1D時(shí)使用。偏移量確定輸入中每個(gè)袋(序列)的起始索引位置章母。
- max_norm (float, optional) – 如果給定母蛛,則范數(shù)大于max_norm的每個(gè)嵌入矢量將重新規(guī)范化為范數(shù)max_norm。注意:這將修改就地重量乳怎。
- norm_type (float, optional) – p范數(shù)中的p為max_norm選項(xiàng)進(jìn)行計(jì)算溯祸。默認(rèn)值2。
- scale_grad_by_freq (boolean, optional) – 如果給定的話舞肆,它將按小批量中單詞頻率的倒數(shù)來縮放梯度。默認(rèn)為False博杖。注意:mode =“ max”時(shí)不支持此選項(xiàng)椿胯。
-
mode (string, optional) –
sum
,mean
或max
剃根。指定減少袋子的方式哩盲。默認(rèn)值:mean
-
sparse (bool, optional) – 如果為True,則梯度為w.r.t.
weight
將是一個(gè)稀疏的張量狈醉。有關(guān)稀疏漸變的更多詳細(xì)信息廉油,請參見torch.nn.Embedding
下的注釋。注意:mode =“ max”
時(shí)不支持此選項(xiàng)苗傅。 -
per_sample_weights (Tensor, optional) – 一個(gè)float / double權(quán)重的張量抒线,或者None表示所有權(quán)重都應(yīng)為1。如果指定渣慕,則
per_sample_weights
的形狀必須與輸入完全相同嘶炭,并且如果不為None,則被視為具有相同的偏移量逊桦。
>>> # an Embedding module containing 10 tensors of size 3
>>> embedding_matrix = torch.rand(10, 3)
>>> # a batch of 2 samples of 4 indices each
>>> input = torch.tensor([1,2,4,5,4,3,2,9])
>>> offsets = torch.tensor([0,4])
>>> F.embedding_bag(embedding_matrix, input, offsets)
tensor([[ 0.3397, 0.3552, 0.5545],
[ 0.5893, 0.4386, 0.5882]])
one_hot
torch.nn.functional.one_hot(tensor, num_classes=-1) → LongTensor
接受具有shape(*)
索引值的LongTensor并返回一個(gè)形狀(*眨猎,num_classes)的張量傻粘,該張量在各處都為零记劝,除非最后一維的索引與輸入張量的對應(yīng)值匹配,在這種情況下它將為1庭敦。
- tensor (LongTensor) –任何形狀的類值匿情。
- num_classes (int) – 類別總數(shù)兰迫。如果設(shè)置為-1,則將類數(shù)推斷為比輸入張量中的最大類值大一码秉。
>>> F.one_hot(torch.arange(0, 5) % 3)
tensor([[1, 0, 0],
[0, 1, 0],
[0, 0, 1],
[1, 0, 0],
[0, 1, 0]])
>>> F.one_hot(torch.arange(0, 5) % 3, num_classes=5)
tensor([[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0]])
>>> F.one_hot(torch.arange(0, 6).view(3,2) % 3)
tensor([[[1, 0, 0],
[0, 1, 0]],
[[0, 0, 1],
[1, 0, 0]],
[[0, 1, 0],
[0, 0, 1]]])
Distance functions
pairwise_distance
torch.nn.functional.pairwise_distance(x1, x2, p=2.0, eps=1e-06, keepdim=False)
cosine_similarity
torch.nn.functional.cosine_similarity(x1, x2, dim=1, eps=1e-8) → Tensor:返回x_1和x_2之間的余弦相似度(沿dim計(jì)算)逮矛。
- x1 (Tensor) – 第一個(gè)輸入.
- x2 (Tensor) – 第二個(gè)輸入 (與x1大小一致).
- dim (int, optional) – 向量維度. Default: 1
- eps (float, optional) – 小值避免被零除. Default: 1e-8
>>> input1 = torch.randn(100, 128)
>>> input2 = torch.randn(100, 128)
>>> output = F.cosine_similarity(input1, input2)
>>> print(output)
pdist
torch.nn.functional.pdist(input, p=2) → Tensor:計(jì)算輸入中每對行向量之間的p范數(shù)距離。這與torch.norm(input [:, None]-input转砖,dim = 2须鼎,p = p)
的對角線除外的上三角部分相同鲸伴。如果行是連續(xù)的,此功能將更快晋控。
如果輸入的形狀為N×M汞窗,則輸出的形狀為
如果p∈(0,∞)赡译,則此函數(shù)等效于scipy.spatial.distance.pdist(input仲吏,'minkowski',p = p)蝌焚。當(dāng)p = 0時(shí)裹唆,它等價(jià)于scipy.spatial.distance.pdist(input,'hamming')*M只洒。當(dāng)p =∞時(shí)许帐,最接近的scipy函數(shù)為scipy.spatial.distance.pdist(xn, lambda x, y: np.abs(x - y).max()).
- input – 輸入N×M 形狀的張量.
- p –用于計(jì)算每個(gè)向量對之間的p范數(shù)距離的p值∈[0,∞] .
Loss functions
binary_cross_entropy
torch.nn.functional.binary_cross_entropy(input, target, weight=None, size_average=None, reduce=None, reduction='mean')測量目標(biāo)和輸出之間的二進(jìn)制交叉熵的函數(shù)毕谴。
- input – 任意形狀的張量
- target – 與輸入形狀相同的張量
- weight (Tensor, optional) – 手動(dòng)重新設(shè)置縮放比例的權(quán)重(如果提供的話成畦,可以重復(fù)以匹配輸入張量形狀)
-
size_average (bool, optional) – 不推薦使用(請參見減少內(nèi)容)。默認(rèn)情況下涝开,損失是批次中每個(gè)損失元素的平均數(shù)循帐。請注意,對于某些損失舀武,每個(gè)樣本有多個(gè)元素拄养。如果將字段
size_average
設(shè)置為False
,則對每個(gè)小批量將損失相加奕剃。當(dāng)reduce
為False
時(shí)被忽略衷旅。默認(rèn)值:True
-
reduce (bool, optional) – 不推薦使用(請參見減少內(nèi)容)。默認(rèn)情況下纵朋,根據(jù)
size_average
柿顶,對每個(gè)小批量的觀測值求平均或求和。當(dāng)reduce
為False
時(shí)操软,將返回每批元素的損失嘁锯,并忽略size_average
。默認(rèn)值:True
-
reduction (string, optional) – 指定要應(yīng)用于輸出的縮減量:
none
|mean
|sum
聂薪。none
:不應(yīng)用任何減少家乘,mean
:輸出的總和除以輸出中元素的數(shù)量,sum
:輸出的總和藏澳。注意:size_average
和reduce
正在棄用中仁锯,同時(shí),指定這兩個(gè)參數(shù)中的任何一個(gè)將覆蓋reduce翔悠。默認(rèn)值:mean
>>> input = torch.randn((3, 2), requires_grad=True)
>>> target = torch.rand((3, 2), requires_grad=False)
>>> loss = F.binary_cross_entropy(F.sigmoid(input), target)
>>> loss.backward()
binary_cross_entropy_with_logits
torch.nn.functional.binary_cross_entropy_with_logits(input, target, weight=None, size_average=None, reduce=None, reduction='mean', pos_weight=None)測量目標(biāo)和輸出對數(shù)之間的二進(jìn)制交叉熵的函數(shù)
- input – 任意形狀的張量
- target – 與輸入形狀相同的張量
- weight (Tensor, optional) – 手動(dòng)重新設(shè)置縮放比例的權(quán)重(如果提供的話业崖,可以重復(fù)以匹配輸入張量形狀)
-
size_average (bool, optional) – 不推薦使用(請參見減少內(nèi)容)野芒。默認(rèn)情況下,損失是批次中每個(gè)損失元素的平均數(shù)双炕。請注意狞悲,對于某些損失,每個(gè)樣本有多個(gè)元素妇斤。如果將字段
size_average
設(shè)置為False
摇锋,則對每個(gè)小批量將損失相加。當(dāng)reduce
為False
時(shí)被忽略站超。默認(rèn)值:True
-
reduce (bool, optional) – 不推薦使用(請參見減少內(nèi)容)荸恕。默認(rèn)情況下,根據(jù)
size_average
死相,對每個(gè)小批量的觀測值求平均或求和戚炫。當(dāng)reduce
為False
時(shí),將返回每批元素的損失媳纬,并忽略size_average
。默認(rèn)值:True
-
reduction (string, optional) – 指定要應(yīng)用于輸出的縮減量:
none
|mean
|sum
施掏。none
:不應(yīng)用任何減少钮惠,mean
:輸出的總和除以輸出中元素的數(shù)量,sum
:輸出的總和七芭。注意:size_average
和reduce
正在棄用中素挽,同時(shí),指定這兩個(gè)參數(shù)中的任何一個(gè)將覆蓋reduce狸驳。默認(rèn)值:mean
- pos_weight (Tensor, optional) – 大量積極的例子预明。必須是長度等于類數(shù)的向量。
>>> input = torch.randn(3, requires_grad=True)
>>> target = torch.empty(3).random_(2)
>>> loss = F.binary_cross_entropy_with_logits(input, target)
>>> loss.backward()
poisson_nll_loss
torch.nn.functional.poisson_nll_loss(input, target, log_input=True, full=False, size_average=None, eps=1e-08, reduce=None, reduction='mean')泊松負(fù)對數(shù)似然損失耙箍。
- input – 任意形狀的張量
- target –歲采樣target~Poisson(input) .
-
log_input –如果為True撰糠,則損失計(jì)算為exp(input)?target?input , 如果為假,則損失為input?target?log(input+eps) . Default:
True
- full –是否計(jì)算全部損失辩昆; i阅酪。 e。添加斯特林近似項(xiàng)汁针。默認(rèn)值:False 是否計(jì)算全部損失术辐; ie。添加斯特林近似項(xiàng)施无。默認(rèn)值:Falsetarget?log(target)?target+0.5?log(2?π?target)
-
size_average (bool, optional) – 不推薦使用(請參見減少內(nèi)容)辉词。默認(rèn)情況下,損失是批次中每個(gè)損失元素的平均數(shù)猾骡。請注意瑞躺,對于某些損失敷搪,每個(gè)樣本有多個(gè)元素。如果將字段
size_average
設(shè)置為False
隘蝎,則對每個(gè)小批量將損失相加购啄。當(dāng)reduce
為False
時(shí)被忽略。默認(rèn)值:True
-
eps (float, optional) – 較小的值嘱么,以避免在以下情況下評估log(0) when
log_input=False
. Default: 1e-8 -
reduce (bool, optional) – 不推薦使用(請參見減少內(nèi)容)狮含。默認(rèn)情況下,根據(jù)
size_average
曼振,對每個(gè)小批量的觀測值求平均或求和几迄。當(dāng)reduce
為False
時(shí),將返回每批元素的損失冰评,并忽略size_average
映胁。默認(rèn)值:True
-
reduction (string, optional) – 指定要應(yīng)用于輸出的縮減量:
none
|mean
|sum
。none
:不應(yīng)用任何減少甲雅,mean
:輸出的總和除以輸出中元素的數(shù)量解孙,sum
:輸出的總和。注意:size_average
和reduce
正在棄用中抛人,同時(shí)弛姜,指定這兩個(gè)參數(shù)中的任何一個(gè)將覆蓋reduce。默認(rèn)值:mean
cosine_embedding_loss
torch.nn.functional.cosine_embedding_loss(input1, input2, target, margin=0, size_average=None, reduce=None, reduction='mean') → Tensor
cross_entropy
torch.nn.functional.cross_entropy(input, target, weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean')該標(biāo)準(zhǔn)將log_softmax和nll_loss組合在一個(gè)函數(shù)中妖枚。
- input (Tensor) – (N, C) 其中C =類數(shù)或在2D損失的情況下 or (N, C, H, W), or (N, C, d_1, d_2, ..., d_K)(N,C,d1,d2,...,dK) 其中在K維損失的情況下為1K≥1廷臼。
- target (Tensor) –(N)其中每個(gè)值為 0≤targets[i]≤C?1 , or (N,d1,d2,...,dK) 其中K≥1表示K維損失。
- weight (Tensor, optional) –每個(gè)類別都需要手動(dòng)調(diào)整縮放權(quán)重比例绝页。如果給定荠商,則必須是大小為C的張量
-
size_average (bool, optional) – 不推薦使用(請參見減少內(nèi)容)。默認(rèn)情況下续誉,損失是批次中每個(gè)損失元素的平均數(shù)莱没。請注意,對于某些損失酷鸦,每個(gè)樣本有多個(gè)元素郊愧。如果將字段
size_average
設(shè)置為False
,則對每個(gè)小批量將損失相加井佑。當(dāng)reduce
為False
時(shí)被忽略属铁。默認(rèn)值:True
- ignore_index (int, optional) – 指定一個(gè)目標(biāo)值,該目標(biāo)值將被忽略并且不會影響輸入梯度躬翁。當(dāng)size_average為True時(shí)焦蘑,損失是在非忽略目標(biāo)上平均的。默認(rèn)值:-100
-
reduce (bool, optional) – 不推薦使用(請參見減少內(nèi)容)盒发。默認(rèn)情況下例嘱,根據(jù)
size_average
狡逢,對每個(gè)小批量的觀測值求平均或求和。當(dāng)reduce
為False
時(shí)拼卵,將返回每批元素的損失奢浑,并忽略size_average
。默認(rèn)值:True
-
reduction (string, optional) – 指定要應(yīng)用于輸出的縮減量:
none
|mean
|sum
腋腮。none
:不應(yīng)用任何減少雀彼,mean
:輸出的總和除以輸出中元素的數(shù)量,sum
:輸出的總和即寡。注意:size_average
和reduce
正在棄用中徊哑,同時(shí),指定這兩個(gè)參數(shù)中的任何一個(gè)將覆蓋reduce聪富。默認(rèn)值:mean
>>> input = torch.randn(3, 5, requires_grad=True)
>>> target = torch.randint(5, (3,), dtype=torch.int64)
>>> loss = F.cross_entropy(input, target)
>>> loss.backward()
ctc_loss
torch.nn.functional.ctc_loss(log_probs, targets, input_lengths, target_lengths, blank=0, reduction='mean', zero_infinity=False)連接主義者的時(shí)間分類損失莺丑。
-
log_probs –(T,N,C) 其中C =字母表中的字符數(shù),包括空白墩蔓,T =輸入長度梢莽,N =批處理大小。輸出的對數(shù)概率(例如[
torch.nn.functional.log_softmax()
]). - targets – (N,S) 或(sum(target_lengths))奸披。目標(biāo)不能為空蟹漓。在第二種形式中,假定目標(biāo)是連接在一起的源内。
- input_lengths – (N) .輸入的長度(必須為≤T )
- target_lengths – (N)目標(biāo)長度
- blank (int, optional) – 空白標(biāo)簽。默認(rèn)值0 .
-
reduction (string, optional) – 指定要應(yīng)用于輸出的縮減量:
none
|mean
|sum
份殿。none
:不應(yīng)用任何減少膜钓,mean
:輸出的總和除以輸出中元素的數(shù)量,sum
:輸出的總和卿嘲。注意:size_average
和reduce
正在棄用中颂斜,同時(shí),指定這兩個(gè)參數(shù)中的任何一個(gè)將覆蓋reduce拾枣。默認(rèn)值:mean
- zero_infinity (bool, optional) – 是否將無窮大損失和相關(guān)的梯度歸零沃疮。默認(rèn)值:False無限損失主要發(fā)生在輸入太短而無法與目標(biāo)對齊時(shí)。
>>> log_probs = torch.randn(50, 16, 20).log_softmax(2).detach().requires_grad_()
>>> targets = torch.randint(1, 20, (16, 30), dtype=torch.long)
>>> input_lengths = torch.full((16,), 50, dtype=torch.long)
>>> target_lengths = torch.randint(10,30,(16,), dtype=torch.long)
>>> loss = F.ctc_loss(log_probs, targets, input_lengths, target_lengths)
>>> loss.backward()
hinge_embedding_loss
torch.nn.functional.hinge_embedding_loss(input, target, margin=1.0, size_average=None, reduce=None, reduction='mean') → Tensor
l1_loss
torch.nn.functional.l1_loss(input, target, size_average=None, reduce=None, reduction='mean') → Tensor取平均逐元素絕對值差的函數(shù)梅肤。
mse_loss
torch.nn.functional.mse_loss(input, target, size_average=None, reduce=None, reduction='mean') → Tensor測量按元素的均方誤差司蔬。
margin_ranking_loss
torch.nn.functional.margin_ranking_loss(input1, input2, target, margin=0, size_average=None, reduce=None, reduction='mean') → Tensor
multilabel_margin_loss
torch.nn.functional.multilabel_margin_loss(input, target, size_average=None, reduce=None, reduction='mean') → Tensor
multilabel_soft_margin_loss
torch.nn.functional.multilabel_soft_margin_loss(input, target, weight=None, size_average=None) → Tensor
multi_margin_loss
torch.nn.functional.multi_margin_loss(input, target, p=1, margin=1.0, weight=None, size_average=None, reduce=None, reduction='mean')
multi_margin_loss(input, target, p=1, margin=1, weight=None, size_average=None,reduce=None, reduction=’mean’) -> Tensor
nll_loss
torch.nn.functional.nll_loss(input, target, weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean')負(fù)對數(shù)似然損失。
>>> # input is of size N x C = 3 x 5
>>> input = torch.randn(3, 5, requires_grad=True)
>>> # each element in target has to have 0 <= value < C
>>> target = torch.tensor([1, 0, 4])
>>> output = F.nll_loss(F.log_softmax(input), target)
>>> output.backward()
smooth_l1_loss
torch.nn.functional.smooth_l1_loss(input, target, size_average=None, reduce=None, reduction='mean')如果絕對逐項(xiàng)誤差低于1姨蝴,則使用平方項(xiàng)的函數(shù)俊啼,否則使用L1項(xiàng)。
soft_margin_loss
torch.nn.functional.soft_margin_loss(input, target, size_average=None, reduce=None, reduction='mean') → Tensor
triplet_margin_loss
torch.nn.functional.triplet_margin_loss(anchor, positive, negative, margin=1.0, p=2, eps=1e-06, swap=False, size_average=None, reduce=None, reduction='mean')
Vision functions
torch.nn.functional.pixel_shuffle()重新排列形狀張量中的元素(?,C×r2,H,W) 到(?,C,H×r,W×r) .
>>> input = torch.randn(1, 9, 4, 4)
>>> output = torch.nn.functional.pixel_shuffle(input, 3)
>>> print(output.size())
torch.Size([1, 1, 12, 12])
pad
torch.nn.functional.pad(input, pad, mode='constant', value=0)填充張量
>>> 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.data.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.data.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.data.size())
torch.Size([3, 9, 7, 3])
interpolate
torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None)向下/向上采樣輸入到給定大小或給定scale_factor.用于插值的算法由模式確定左医。當(dāng)前支持時(shí)間授帕,空間和體積采樣同木,即,預(yù)期輸入的形狀為3-D跛十,4-D或5-D彤路。輸入尺寸以以下格式解釋:迷你批x通道x [可選深度] x [可選高度] x寬度〗嬗常可用于調(diào)整大小的模式為:最近洲尊,線性(僅3D),雙線性屏轰,雙三次(僅4D)颊郎,三線性(僅5D),面積
upsample
torch.nn.functional.upsample(input, size=None, scale_factor=None, mode='nearest', align_corners=None)將輸入上采樣到給定大小或給定scale_factor
upsample_nearest
torch.nn.functional.upsample_nearest(input, size=None, scale_factor=None)使用最近鄰的像素值對輸入進(jìn)行上采樣霎苗。
upsample_bilinear
torch.nn.functional.upsample_bilinear(input, size=None, scale_factor=None)使用雙線性上采樣對輸入進(jìn)行上采樣姆吭。
grid_sample
torch.nn.functional.grid_sample(input, grid, mode='bilinear', padding_mode='zeros', align_corners=None)給定input和flow-field grid,使用input和grid中的像素位置來計(jì)算輸出唁盏。當(dāng)前内狸,僅支持空間(4-D)和體積(5-D)輸入。
在空間(4-D)情況下厘擂,用于input形狀為(N昆淡,C,H_in 刽严,W_in )和形狀為(N昂灵,H _out ,W_out 舞萄,2)的grid眨补,輸出將具有(N,C倒脓,H_out 撑螺,W_out )的output。
對于每個(gè)輸出位置output [n崎弃,:甘晤,h,w]饲做,大小為2的矢量grid[n线婚,h,w]
指定input
像素位置x
和y
盆均,這些像素位置用于內(nèi)插輸出值output [n酌伊,:, h,w]。在5D輸入的情況下居砖,grid [n虹脯,d,h奏候,w]指定用于內(nèi)插output [n循集,:,d蔗草,h局雄,w]的x蜗搔,y弊攘,z像素位置握爷。mode參數(shù)指定nearest
或bilinear
插值方法以對輸入像素進(jìn)行采樣。
affine_grid
torch.nn.functional.affine_grid(theta, size, align_corners=None)給定一批仿射矩陣theta模叙,生成2D或3D流場(采樣網(wǎng)格)歇拆。
DataParallel functions (multi-GPU, distributed)
data_parallel
torch.nn.parallel.data_parallel(module, inputs, device_ids=None, output_device=None, dim=0, module_kwargs=None)跨device_ids中提供的GPU并行評估模塊(輸入)這是DataParallel模塊的功能版本。