增加层大小,同时保持较旧的权重冻结
Increase layer size while keep the older weights frozen
我现在正在尝试实现以下过程:首先,我有一个训练有素的自动编码器,然后我正在考虑增加瓶颈层的大小(增加该层中“神经元”的数量)。然后我想将增加的模型作为一个整体进行训练,同时保持与旧层相对应的权重冻结。
总体思路是,以MNIST为例,这些新的神经元会输出什么特征(这些神经元会在原来的输出上增加什么细节)?
我实现这个的想法是,首先,我们训练一个普通的自动编码器,然后我可以构建相同的模型,除了增加瓶颈层的大小。然后我将权重加载到这个新模型并保持它们固定。但是我遇到了两个问题:
- 如何加载只占新权重向量一部分的权重(因为旧瓶颈尺寸小于新瓶颈尺寸)?
- 如何保持部分权重固定?以keras为例,只允许整层不可训练(set training=false).
根据您的问题,我了解到您正在尝试增加图层中的特征图大小或输出大小。这可以通过在每一层添加不同的管道并在操作后连接两个输出来完成。例如
最初你的图层是conv2d(output_layers = a)。
所以流程将是 Layer-1 -----> conv2d ---a--> Layer2
然后,如果你最终想要 a+b 层,那么你可以将 conv2d(output_layers = b) 从第 1 层的输出添加到你的代码中。因此,新卷积的输出将是 'b' 特征大小,而初始卷积的输出将是 'a'。两者可以连接起来以获得 'a+b' 大小。流程如下
Layer-1 ----> concat(conv2d(a)+conv2d(b))---a+b----> Layer2
通过这种方式,您可以轻松地加载权重并了解新层在训练后试图预测的内容。
我现在正在尝试实现以下过程:首先,我有一个训练有素的自动编码器,然后我正在考虑增加瓶颈层的大小(增加该层中“神经元”的数量)。然后我想将增加的模型作为一个整体进行训练,同时保持与旧层相对应的权重冻结。 总体思路是,以MNIST为例,这些新的神经元会输出什么特征(这些神经元会在原来的输出上增加什么细节)? 我实现这个的想法是,首先,我们训练一个普通的自动编码器,然后我可以构建相同的模型,除了增加瓶颈层的大小。然后我将权重加载到这个新模型并保持它们固定。但是我遇到了两个问题:
- 如何加载只占新权重向量一部分的权重(因为旧瓶颈尺寸小于新瓶颈尺寸)?
- 如何保持部分权重固定?以keras为例,只允许整层不可训练(set training=false).
根据您的问题,我了解到您正在尝试增加图层中的特征图大小或输出大小。这可以通过在每一层添加不同的管道并在操作后连接两个输出来完成。例如
最初你的图层是conv2d(output_layers = a)。 所以流程将是 Layer-1 -----> conv2d ---a--> Layer2
然后,如果你最终想要 a+b 层,那么你可以将 conv2d(output_layers = b) 从第 1 层的输出添加到你的代码中。因此,新卷积的输出将是 'b' 特征大小,而初始卷积的输出将是 'a'。两者可以连接起来以获得 'a+b' 大小。流程如下 Layer-1 ----> concat(conv2d(a)+conv2d(b))---a+b----> Layer2
通过这种方式,您可以轻松地加载权重并了解新层在训练后试图预测的内容。