增加图层大小,同时保持较早的权重不变

时间:2020-08-02 07:53:56

标签: tensorflow keras neural-network autoencoder

我现在正在尝试执行以下过程:首先,我有训练有素的自动编码器,然后我考虑增加瓶颈层的大小(增加该层中“神经元”的数量)。然后,我想整体训练增加的模型,同时保持与较旧图层相对应的权重不变。 总体思路是,以MNIST为例,这些新神经元将输出什么特征(这些神经元将在原始输出中添加哪些细节)? 我要实现的想法是,首先,我们训练一个普通的自动编码器,然后我可以构建相同的模型,只是瓶颈层的大小增加了。然后,将权重加载到此新模型中,并保持固定不变。但是我遇到了两个问题:

  1. 如何加载仅包含新权重向量(由于较旧的瓶颈小于新瓶颈)的权重?
  2. 如何保持部分权重固定?以keras为例,它只允许整个图层不可训练(设置training = false)。

1 个答案:

答案 0 :(得分:1)

据您所知,您正在尝试增加要素地图的大小或图层中的输出大小。这可以通过在每一层添加不同的流水线并在操作之后将两个输出串联在一起来完成。例如

最初,您的图层是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层

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