用keras tensorflow实现共享卷积层

问题描述 投票:0回答:1

我有一个网络,它的一部分是类似于unet的结构。我想让卷积层在两个输入之间共享。我的代码的一个例子。

conv_layer = Conv(parameters)
out1 = con_layer(input1)
out2 = con_layer(input2)

这个部分是否创造了两个输出,每个输出都只取决于对应的输入和共享的权重? 还是将输入连接起来,然后从卷积中传递出来?在这层的两次调用中,权重是一样的吗?另外,还有一个关于学习的问题。到了反向传播的时候,损失是否从共享层传播一次?学习有什么变化吗?

python tensorflow keras shared
1个回答
0
投票

首先,U-Net不完全有任何共享层。它使用跳过连接和连接来重用功能。

一个共享层看起来像这样

x --> F(x)
          ==> G(F(x),F(y))
y --> F(y) 

这个部分是否会创建两个输出,每个输出只取决于对应的输入和共享权重?

  • 是的,两个输入的共享权重是固定的,输出取决于每个输入。

它是否将输入连接起来,并将它们从卷积中传递出来?

  • 不,它不进行任何连接。即使是两个输入也是完全独立的,不直接交互--它们只通过conv_layer。

权重是一样的吗?

  • 是的,共享层的权重是完全一样的。

当涉及到反向传播时,损失是否会从共享层传播一次?学习上有什么变化吗?

  • 不知道你是什么意思,但是两个输入的权重都会更新,但同时更新。如果你说的学习变化是指与相对于非共享层,是的。

一些有用的阅读。http: /neural.visionblogdeep -learningbackpropagation -with -shared -weights.

https:/datascience.stackexchange.comquestions26755cnn-how-does-backpropagation-with-weight-sharing-work-exactly。

https:/datascience.stackexchange.comquestions27506back-propagation-in-cnn。

© www.soinside.com 2019 - 2024. All rights reserved.