2017-02-09 138 views
1

Keras中,与tf.nn.conv2d_transpose对应的图层(函数)在Tensorflow中有哪些?我曾看到评论说我们可以Just use combinations of UpSampling2D and Convolution2D as appropriate。是对的吗?与tf.nn.conv2d_transpose对应的Keras图层(函数)

在以下两个示例中,它们都使用这种组合。

1)在Building Autoencoders in Keras中,作者按如下构建解码器。

enter image description here

2)在一个u-uet implementation,作者建立去卷积如下

up6 = merge([UpSampling2D(size=(2, 2))(conv5), conv4], mode='concat', concat_axis=1) 
conv6 = Convolution2D(256, 3, 3, activation='relu', border_mode='same')(up6) 
conv6 = Convolution2D(256, 3, 3, activation='relu', border_mode='same')(conv6) 

回答

1

Keras相应层是Deconvolution2D层。

值得一提的是,你应该非常小心他们,因为他们有时可能会以意想不到的方式行事。我强烈建议您阅读this Stack Overflow问题(及其答案),然后再开始使用此图层。

UPDATE:

  1. 卷积是被添加相对最近的一层 - 也许这就是为什么人们建议您使用Convolution2D * UpSampling2D的原因。
  2. 因为它比较新 - 在某些情况下可能无法正常工作。它也需要一些经验才能正确使用它们。
  3. 实际上 - 从数学的角度来看 - 每个解卷积都可以作为Convolution2DUpSampling2D的组合来呈现 - 所以也许这就是它在您提供的文本中被提及的原因。

更新2:

确定。我想我找到了一个简单的解释,为什么Deconvolution2D可能以Convolution2DUpSampling2D的组合形式呈现。我们将使用定义Deconvolution2D是一些卷积层的渐变。让我们考虑三种最常见的情况:

  1. 最简单的是没有任何池的Convolutional2D。在这种情况下 - 因为它是线性运算 - 它的梯度是一个函数本身 - 所以Convolution2D
  2. 更棘手的是梯度Convolution2DAveragePooling。所以:(AveragePooling2D * Convolution2D)' = AveragePooling2D' * Convolution2D'。但是AveragePooling2D = UpSample2D * constant的梯度 - 所以在介词为真的情况下也是如此。
  3. 最棘手的是与MaxPooling2D。在这种情况下仍然(MaxPooling2D * Convolution2D)' = MaxPooling2D' * Convolution2D'MaxPooling2D' != UpSample2D。但在这种情况下,可以很容易地找到一个简单Convolution2D这使得MaxPooling2D' = Convolution2D * UpSample2D(直观地 - 的MaxPooling2D梯度是零矩阵只有一个1在其对角线作为Convolution2D可能表达的矩阵运算 - 它也可以由身份表示注射矩阵到MaxPooling2D梯度)。所以: (MaxPooling2D * Convolution2D)' = UpSampling2D * Convolution2D * Convolution2D = UpSampling2D * Convolution2D'

的最后应注意的证明的所有部分已表明Deconvolution2DUpSampling2D的组合物和Convolution2D代替相反。人们可以很容易地证明,组成UpSampling2DConvolution2D的形式的每个功能可以容易地以UpSampling2DConvolution2D的组成的形式呈现。所以基本上 - 证明完成:)

+0

嗨马尔钦,感谢您的答复。令我困惑的是,在其他一些情况下,基于“upsampling”和“convolution2D”的组合实现了类似的目标。Deconvolution2D和这个组合的区别是什么?我更新了原始文章,包括 – user297850

+0

我更新了我的评论 –

+0

谢谢,我可以安全地假设他们在数学上是等价的吗?是否有任何数学派生词?谢谢。 – user297850