首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反褶积(反置卷积)层中增加偏置

反褶积(反置卷积)层中增加偏置
EN

Data Science用户
提问于 2018-06-25 12:56:34
回答 1查看 2.1K关注 0票数 1

我的问题是关于转置卷积运算(也通常称为反褶积或上卷积)。例如,在TensorFlow中,我指的是层。

我的问题是,在应用这一层时,我们如何/何时添加偏置(拦截)项?

当使用“常规”卷积时,我们会这样做:

代码语言:javascript
复制
conv_output = tf.nn.conv2d(input, kernel, strides, padding='VALID')
conv_output = tf.nn.bias_add(conv_output, bias)

在应用反褶积层时,我们如何做到这一点?我的困惑产生了,因为我的导师告诉我把上卷积想象成一个伪逆卷积层(逆的意思是卷积降低了输入的样本,而转置卷积则是向上的)。我知道它们不是数学上的逆。)

据他说:

正则卷积:conv = x.w + b

转置卷积:x = (conv - b).W (其中w和W不相同)。

上面的方程式对吗?它的某些地方让我感到不安。

在这种情况下,既然我们正在“倒退”,我们是否应该这样做:

代码语言:javascript
复制
deconv_output = tf.nn.bias_add(input, -1 * bias)
deconv_output = tf.nn.conv2d_transpose(deconv_output, kernel, strides, padding='VALID')

或者我们应该在应用转置卷积后加上偏置,就像我们在“规则”卷积中所做的那样?

EN

回答 1

Data Science用户

回答已采纳

发布于 2018-06-25 21:24:35

我们在倒退,就像你说的,我们是在重采样,和标准的conv层相反,但是我们仍然在神经网络中向前迈进。因此,我要在卷积运算之后加上偏置。这是标准做法:首先应用矩阵点积(即仿射变换),然后在最后应用非线性之前增加偏差。

对于转置卷积,我们并不是完全反向正(下采样)卷积-这样的操作将被称为逆卷积,或数学中的反褶积。我们正在执行(转置)卷积操作,返回产生激活映射的相同输入维,但不能保证实际值与原始输入相同。

您可以从各种卷积运算的动画中看到,转置卷积基本上是一个正常卷积,但是增加了膨胀/填充以获得所需的输出维数。诀窍是保留像素之间的定位映射。

取材于这些动画的纸中,它们解释了转置卷积实际上是反向执行的卷积步骤:

.虽然内核w定义了一个卷积,其向前和向后通过分别与$\textbf{C}$和$\textbf{C}^T$相乘来计算,但它也定义了一个转置卷积,其向前和向后通过分别乘以$\textbf{C}^T$和$(textbf{C}^T)^T=textbf{C}$来计算。

支持我观点的另一个来源是:在PyTorch实现中,偏置似乎是增加了卷积结果的输出。

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/33614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档