CNN的计算方式:

w1 = (w - F_w + 2p) / s_w + 1

h1 = (h - F_h + 2p) / s_h + 1

其中 w, h 分别为上一层的宽高, Filters(kernel)的大小为 F_w, F_h

strides 步长为: s_w, s_h

p 为padding 的大小

DeCNN 的计算方式:

w1 = (w -1 )* s_w + F_w - 2p

h1 = (h -1 )* s_h + F_h - 2p

其中 w, h 分别为上一层的宽高, Filters(kernel)的大小为 F_w, F_h

strides 步长为: s_w, s_h

p 为padding 的大小

上面的有点错误, 看了tensorflow的实现:

具体代码如下:

def _compute_output_shape(self, input_shape):
input_shape = tensor_shape.TensorShape(input_shape).as_list()
output_shape = list(input_shape)
if self.data_format == 'channels_first':
c_axis, h_axis, w_axis = 1, 2, 3
else:
c_axis, h_axis, w_axis = 3, 1, 2 kernel_h, kernel_w = self.kernel_size
stride_h, stride_w = self.strides output_shape[c_axis] = self.filters
output_shape[h_axis] = utils.deconv_output_length(
output_shape[h_axis], kernel_h, self.padding, stride_h)
output_shape[w_axis] = utils.deconv_output_length(
output_shape[w_axis], kernel_w, self.padding, stride_w)
return tensor_shape.TensorShape(output_shape)

这里就是说, W, H的计算方式,有额外的utils包来辅助完成,具体的代码如下:

def deconv_output_length(input_length, filter_size, padding, stride):
"""Determines output length of a transposed convolution given input length. Arguments:
input_length: integer.
filter_size: integer.
padding: one of "same", "valid", "full".
stride: integer. Returns:
The output length (integer).
"""
if input_length is None:
return None
input_length *= stride
if padding == 'valid':
input_length += max(filter_size - stride, )
elif padding == 'full':
input_length -= (stride + filter_size - )
return input_length

也就是说,分了三种padding的情况, “same”、"valid"、"full"三种方式,而每一种方式都不同。代码上给了后两者的实现。

这说明,如果padding使用的是“same”的情况的话。input_lenght = input_lenght * 2。

所以,DeCNN的输出计算分为三种方式,做如下总结:

“same”:

input_length *= stride

"valid":

input_length = input_length * stride + max(filter_size - stride, 0)

"full":

input_length = input_length * stride - stride + filter_size - 2 = (input_lenght - 1) * stride + filter_size - 2

这里Filter_sieze为卷积核的大小,及kernel_size

关于卷积网络以及反卷积网络shape的计算的更多相关文章

  1. 深度学习卷积网络中反卷积/转置卷积的理解 transposed conv/deconv

    搞明白了卷积网络中所谓deconv到底是个什么东西后,不写下来怕又忘记,根据参考资料,加上我自己的理解,记录在这篇博客里. 先来规范表达 为了方便理解,本文出现的举例情况都是2D矩阵卷积,卷积输入和核 ...

  2. CNN卷积可视化与反卷积

    1.<Visualizing and Understanding Convolutional Networks> 2.<Adaptive deconvolutional networ ...

  3. 用反卷积(Deconvnet)可视化理解卷积神经网络还有使用tensorboard

    『cs231n』卷积神经网络的可视化与进一步理解 深度学习小白——卷积神经网络可视化(二) TensorBoard--TensorFlow可视化 原文地址:http://blog.csdn.net/h ...

  4. feature map 大小以及反卷积的理解

    (1)边长的计算公式是:  output_h =(originalSize_h+padding*2-kernelSize_h)/stride +1 输入图片大小为200×200,依次经过一层卷积(ke ...

  5. 反卷积Deconvolution

    反卷积(转置卷积.空洞卷积(微步卷积))近几年用得较多,本篇博客主要是介绍一下反卷积,尤其是怎么计算反卷积(选择反卷积的相关参数) 图1 空洞卷积(微步卷积)的例子,其中下面的图是输入,上面的图是输出 ...

  6. 对抗生成网络-图像卷积-mnist数据生成(代码) 1.tf.layers.conv2d(卷积操作) 2.tf.layers.conv2d_transpose(反卷积操作) 3.tf.layers.batch_normalize(归一化操作) 4.tf.maximum(用于lrelu) 5.tf.train_variable(训练中所有参数) 6.np.random.uniform(生成正态数据

    1. tf.layers.conv2d(input, filter, kernel_size, stride, padding) # 进行卷积操作 参数说明:input输入数据, filter特征图的 ...

  7. 卷积神经网络的一些经典网络2(Inception)

    在架构内容设计方面,其中一个比较有帮助的想法是使用1x1卷积.1x1卷积能做什么? 对于6x6x1的通道的图片来说,1x1卷积效果不佳,如果是一张6x6x32的图片,那么使用1x1卷积核进行卷积效果更 ...

  8. 卷积神经网络的一些经典网络(Lenet,AlexNet,VGG16,ResNet)

    LeNet – 5网络 网络结构为: 输入图像是:32x32x1的灰度图像 卷积核:5x5,stride=1 得到Conv1:28x28x6 池化层:2x2,stride=2 (池化之后再经过激活函数 ...

  9. 深度学习方法(十三):卷积神经网络结构变化——可变形卷积网络deformable convolutional networks

    上一篇我们介绍了:深度学习方法(十二):卷积神经网络结构变化--Spatial Transformer Networks,STN创造性地在CNN结构中装入了一个可学习的仿射变换,目的是增加CNN的旋转 ...

随机推荐

  1. 微信小程序之上传多张图片

    之前写过一篇小程序商品发布的博客,里面有上传多张图片的功能,这里单独拿出来实现以下,小程序的upLoadFile一次只能上传一张图片,需要循环调这个接口来实现 for (var i = 0; i &l ...

  2. 基于ASP.Net Core开发一套通用后台框架记录-(项目的搭建)

    写在前面 本系列博客是本人在学习的过程中搭建学习的记录,如果对你有所帮助那再好不过.如果您有发现错误,请告知我,我会第一时间修改. 前期我不会公开源码,我想是一点点敲代码,不然复制.粘贴那就没意思了. ...

  3. group by 和 select

    group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面.

  4. 八皇后问题---详解---参考<<紫书>>

    在一个8*8的棋盘上  放置八个皇后 , 使得他们互相不攻击(皇后攻击范围为 同行同列同对角线) , 方法一 : 从64个格子中 选一个子集 , 使得 " 子集 中恰好有八个元素 , 且任意 ...

  5. Mac OS下配置 ADB环境变量

    前提已经安装了Android sdk. 步骤打开终端Terminal, 输入open -e ~/.bash_profile, 若之前没有该文件,会自动创建.添加内容 export PATH=${PAT ...

  6. JavaScript--认识DOM

    文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码: 将HTM ...

  7. 设置myeclipse的JSP、HTML的页面编码格式

    JSP编码格式: 点击菜单上的window--->preferences 在弹出的对话框中点击MyEclise--->Files and Editors--->JSP, 在Encod ...

  8. 关于用友 U8-UAP二开的一些事

    这是关于一个刚刚接触用友U8的二次开发的一些小心得. 首先就是用友二开的论坛,http://u8dev.yonyou.com/ 当然这个论坛做得不怎么样,提出了好几个问题,都没有回复的. 以下是关于二 ...

  9. 01--Java开发中文乱码问题分析

    一.常见的编码格式 1. ASCII码 总共128个字符,用1个字节的低7位表示,0~31是控制字符,32~126是打印字符. 2.  ISO-8859-1 ISO组织在ASCII基础上进行扩展,仍是 ...

  10. Less——less基本安装

    1.下载node.js 我们需要NodeJ运行LESS示例. 要下载NodeJ,请打开链接https://nodejs.org/en/ 2.node.js安装是否正确 在cmd中输入lessc -v, ...