增加层大小,同时保持旧权重冻结



我现在正在尝试实现以下过程:首先,我有一个经过训练的自动编码器,然后我想增加瓶颈层的大小(增加该层中的"神经元"数量(。然后,我想将增加的模型作为一个整体进行训练,同时保持与旧层相对应的权重冻结。总体思路是,以MNIST为例,这些新神经元将输出哪些特征(这些神经元将在原始输出中添加哪些细节(?我实现这一点的想法是,首先,我们训练一个普通的自动编码器,然后我可以构建相同的模型,除非瓶颈层的大小增加。然后我将权重加载到这个新模型中,并使其保持固定。但我遇到了两个问题:

  1. 如何加载只占新权重向量一部分的权重(因为旧的瓶颈大小小于新的瓶颈大小(
  2. 如何固定部分重量?以keras为例,它只允许整个层不可访问(设置training=false(

从您的问题中我可以理解,您正试图增加图层中的特征图大小或输出大小。这可以通过在每一层添加不同的管道并在操作后连接两个输出来实现。例如

最初,层是conv2d(output_layers=a(。所以流程将是第1层----->conv2d-a->第2层

然后,如果你想最终拥有a+b层,那么你可以在代码中添加第1层输出的conv2d(output_layers=b(。因此,输出将是这个新卷积的"b"特征大小和初始卷积的"a"特征大小。两者都可以连接以获得"a+b"大小。流程如下第1层---->concat(conv2d(a(+conv2d(b((--a+b---->第2层

通过这种方式,您可以轻松地加载权重,还可以了解新层在训练后试图预测的内容。

相关内容

  • 没有找到相关文章

最新更新