涉及一些pytorch的API内容在此进行整理
损失函数:Binary-Cross-Entropy loss
criterion = nn.BCECriterion()
创建一个标准来度量目标和输出之间的二值交叉熵
$CrossEntropy(t,o) = -(t*log(o) + (1-t) * log(1-o)) $
这是用来测量误差的重建,例如一个自动编码器。
卷积操作 2Dconv spatial conv
module = nn.SpatialConvolution(nInputPlane, nOutputPlane, kW, kH, [dW], [dH], [padW], [padH])
各参数的意义
nInputPlane: 输入图像的通道数
nOutputPlane: 卷积层输出数据的通道数(Caffe中的num_output)
kW: 卷积核窗口宽度
kH: 卷积核窗口长度
dW: 卷积窗口沿宽边方向上的移动步距,默认值为1
dH: 卷积窗口沿长边方向上的移动步距,默认值为1
padW, padH: 输入补零,默认值是0,比较好的设置是(kW-1)/2,可以保证卷积后feature map的plane size与输入的plane size一致。
卷积操作 空间全卷积 spatial full conv
module = nn.SpatialFullConvolution(nInputPlane, nOutputPlane, kW, kH, [dW], [dH], [padW], [padH], [adjW], [adjH])
咋一看与SpatialConvolution基本一致,只是多了两个参数而已。在其他框架下,这一操作相当于: “In-network Upsampling”, “Fractionally-strided convolution”, “Backwards Convolution,” “Deconvolution”, or “Upconvolution. 及反卷积
各参数的意义:
nOutputPlane: 卷积层输出数据的通道数(Caffe中的num_output) kW: 卷积核窗口宽度 kH: 卷积核窗口长度 dW: 卷积窗口沿宽边方向上的移动步距,默认值为1 dH: 卷积窗口沿长边方向上的移动步距,默认值为1 padW, padH: 输入补零,默认值是0,比较好的设置是(kW-1)/2,可以保证卷积后feature map的plane size与输入的plane size一致 adjW: 额外加上一定的宽度或者高度到输出图像中,默认值是0,但是不能超过dW-1/dH-1。
因为spatial full conv 是等同于上采样或者叫做反卷积,所以他的输出feature map的计算公式与一般的conv 是不同的:
owidth = (width - 1) * dW - 2*padW + kW + adjW
oheight = (height - 1) * dH - 2*padH + kH + adjH