TensorFlow 卷积操作
TensorFlow 还提供了一些其他类型的卷积层:
conv1d()
为 1D 输入创建一个卷积层。 例如,在自然语言处理中这是有用的,其中句子可以表示为一维单词阵列,并且接受场覆盖一些邻近单词。conv3d()
创建一个 3D 输入的卷积层,如 3D PET 扫描。atrous_conv2d()
创建了一个 atrous 卷积层(“àtrous”是法语“with holes”)。 这相当于使用具有通过插入行和列(即,孔)而扩大的卷积核的普通卷积层。 例如,等于[[1,2,3]]
的1×3
卷积核可以以4的扩张率扩张,导致扩张的卷积核[[1,0,0,0,2,0,0,0,3]]
。 这使得卷积层在没有计算价格的情况下具有更大的局部感受野,并且不使用额外的参数。conv2d_transpose()
创建了一个转置卷积层,有时称为去卷积层,它对图像进行上采样(这个名称是非常具有误导性的,因为这个层并不执行去卷积,这是一个定义良好的数学运算(卷积的逆)) 。这是通过在输入之间插入零来实现的,所以你可以把它看作是一个使用分数步长的普通卷积层。例如,在图像分割中,上采样是有用的:在典型的CNN中,特征映射越来越小当通过网络时,所以如果你想输出一个与输入大小相同的图像,你需要一个上采样层。depthwise_conv2d()
创建一个深度卷积层,将每个卷积核独立应用于每个单独的输入通道。 因此,如果有fn
卷积核和fn'
输入通道,那么这将输出fn×fn'
特征映射。separable_conv2d()
创建一个可分离的卷积层,首先像深度卷积层一样工作,然后将1×1
卷积层应用于结果特征映射。 这使得可以将卷积核应用于任意的输入通道组。