使用keras张量流实现共享卷积层

时间:2020-04-22 22:53:27

标签: python tensorflow keras shared

我有一个网络,其中有一个像unet一样的结构。我想在两个输入之间共享卷积层。我的代码示例:

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

这部分是否创建两个输出,每个输出仅取决于对应的输入和共享权重?或者将输入连接起来并从卷积中传递出来?该层的两次调用中的权重是否相同? 还有,关于学习的问题。当涉及反向传播时,损耗是否从共享层传播一次?学习有什么变化吗?

1 个答案:

答案 0 :(得分:0)

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

共享层看起来像这样

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

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

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

它是否连接输入并通过卷积传递它们?

  • 不,它不执行任何串联。甚至两个输入都是完全独立的,并且不直接交互-它们仅通过conv_layer。

权重是否相同?

  • 是的,共享层的权重完全相同。

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

  • 不知道您的意思是什么,但是将同时更新两个输入的权重。如果学习改变意味着相对于非共享层,是的。

一些有用的读物​​:http://neural.vision/blog/deep-learning/backpropagation-with-shared-weights/

https://datascience.stackexchange.com/questions/26755/cnn-how-does-backpropagation-with-weight-sharing-work-exactly

https://datascience.stackexchange.com/questions/27506/back-propagation-in-cnn