Keras的标准配方:
# This layer can take as input a matrix
# and will return a vector of size 64
shared_lstm = LSTM(64)
# When we reuse the same layer instance
# multiple times, the weights of the layer
# are also being reused
# (it is effectively *the same* layer)
encoded_a = shared_lstm(tweet_a)
encoded_b = shared_lstm(tweet_b)
为我们提供了一个共享的层,即采用不同的张量作为输入和输出,但在它们上均等地工作。层名称将类似于“ lstm_1”。
有没有办法创建两个具有不同名称的不同(卷积)层,但共享其内核权重和偏差权重?
更新
让我澄清一下目的。我有一个带有特征图金字塔的对象检测模型(单发检测器)。这些功能图像这样相互叠置:
det_ctx1 (32x32, Conv+ReLU+MaxPool) -> det_ctx2 (16x16, Conv+ReLU+MaxPool) -> ...
检测预测在技术上被实现为卷积层,这些卷积层从这些特征图产生偏移量和类置信度:
det_ctx1 -> det_ctx1_conf
-> det_ctx1_loc
|
\/
det_ctx2 -> det_ctx2_conf
-> det_ctx2_loc
|
\/
det_ctx3 -> det_ctx3_conf
-> det_ctx3_loc
det_ctx1_conf
和det_ctx2_conf
在语义上是相同的,我想利用权重共享来更好地训练那些图层(在正常情况下,训练样本被分配给某些金字塔等级,因此某些等级训练样本太少)。