使用 keras tensorflow 实现共享卷积层
Implement shared convolutional layers with keras tensorflow
我有一个网络,其中有一个类似 unet 的结构。我想让卷积层在两个输入之间共享。我的代码示例:
conv_layer = Conv(parameters)
out1 = con_layer(input1)
out2 = con_layer(input2)
这部分是否创建两个输出,每个输出仅取决于相应的输入和共享权重?或者它是否连接输入并通过卷积传递它们?该层的两次调用中的权重是否相同?
另外,关于学习的问题。谈到反向传播时,损失是否从共享层传播一次?学习有什么变化吗?
首先,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/27506/back-propagation-in-cnn
我有一个网络,其中有一个类似 unet 的结构。我想让卷积层在两个输入之间共享。我的代码示例:
conv_layer = Conv(parameters)
out1 = con_layer(input1)
out2 = con_layer(input2)
这部分是否创建两个输出,每个输出仅取决于相应的输入和共享权重?或者它是否连接输入并通过卷积传递它们?该层的两次调用中的权重是否相同? 另外,关于学习的问题。谈到反向传播时,损失是否从共享层传播一次?学习有什么变化吗?
首先,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/27506/back-propagation-in-cnn