如何在Keras中执行解卷积/ TransConvolution?

时间:2019-01-04 07:01:24

标签: python keras convolution deconvolution

我的模型结构如下:

图层(类型)输出形状参数#

conv2d_31 (Conv2D)           (None, 40, 40, 16)        160       
_________________________________________________________________
max_pooling2d_4 (MaxPooling2 (None, 20, 20, 16)        0         
_________________________________________________________________
conv2d_32 (Conv2D)           (None, 20, 20, 32)        12832     
_________________________________________________________________
max_pooling2d_5 (MaxPooling2 (None, 10, 10, 32)        0         
_________________________________________________________________
conv2d_33 (Conv2D)           (None, 10, 10, 64)        100416    
_________________________________________________________________
max_pooling2d_6 (MaxPooling2 (None, 5, 5, 64)          0         
_________________________________________________________________
flatten_2 (Flatten)          (None, 1600)              0         
_________________________________________________________________
dense_3 (Dense)              (None, 1024)              1639424   
_________________________________________________________________
dropout_2 (Dropout)          (None, 1024)              0         
_________________________________________________________________
dense_4 (Dense)              (None, 1)                 1025      
_________________________________________________________________
activation_52 (Activation)   (None, 1)                 0      

我想将反卷积应用于任何特定图层并绘制结果。我以为我应该使用Conv2DTranspose图层,但似乎无法理解其中涉及的参数。请帮助

1 个答案:

答案 0 :(得分:1)

请注意术语。

反卷积不是换位卷积,尽管术语可以互换使用。正确使用的术语是转置卷积。这就是为什么在Keras中甚至不存在“反卷积”层,而Conv2DTransposed却如此的原因。

您可以尝试通过 Model API 而不是 Sequential API 来构建深度学习模型。

这样,您可以将Conv2DTransposed添加到特定图层,并查看转置卷积的结果。

您可以将转置的卷积层视为上采样层。前者具有可学习的参数,而后者仅具有两倍/三倍等,可以通过插值来获得图像的大小。

查看功能API (模型API)的Keras文档:https://keras.io/models/model/

请查阅Keras文档中有关转置卷积的内容:https://keras.io/layers/convolutional/

查看此github帐户以直观地了解转置卷积:https://github.com/vdumoulin/conv_arithmetic