Python 为keras中的层设置权重有什么意义?

Python 为keras中的层设置权重有什么意义?,python,tensorflow,keras,deep-learning,Python,Tensorflow,Keras,Deep Learning,我很难理解像任务这样的转移学习中的权重转移 我训练了两个网络,并使用keras和tensorflow后端保存了权重(两个网络在同一个模型中)。我想使用来自一个网络的一半层和来自另一个网络的一半层,并将它们连接为一个新网络。实际上,我想切断两个网络,将它们连接到一个新的网络中,然后扔掉剩下的层。由于层的一半是顶层,我无法使用.pop()来完成,所以我决定转移权重 我尝试将旧模型中的每个层(我需要的层)的相应权重设置为新模型中的相应层,如: new_model.layers[i].set_weigh

我很难理解像任务这样的转移学习中的权重转移

我训练了两个网络,并使用keras和tensorflow后端保存了权重(两个网络在同一个模型中)。我想使用来自一个网络的一半层和来自另一个网络的一半层,并将它们连接为一个新网络。实际上,我想切断两个网络,将它们连接到一个新的网络中,然后扔掉剩下的层。由于层的一半是顶层,我无法使用.pop()来完成,所以我决定转移权重

我尝试将旧模型中的每个层(我需要的层)的相应权重设置为新模型中的相应层,如:

new_model.layers[i].set_weights(model.layers[i].get_weights())
不过,这会加载权重,但似乎不像我预期的那样工作

然后,我尝试获取图层:

new_model.layers[i] = model.get_layer('name').output
这似乎也做了无意义的重量转移

  • 我应该把什么从我的旧网络转移到新的网络上,以实现实际占据整个网络一半的感觉

  • 是否只有权重(和偏差)携带所有信息?我还应该分配什么来获得理论上相同的层

  • 盖特莱尔回来了什么

  • 获取重量/设置重量与装载重量的作用相同吗


  • 我不是ML/NNs方面的专家,但在我看来这是一项奇怪的任务。迁移学习占用了一个网络,丢失了后面的层,并重新训练了这些层。这样做的好处是在早期的层中学习到的特征提取(代价高昂),但随后对后续层进行训练,以便为您自己的问题构建分类。您所做的对我来说毫无意义:您的第二个网络有一组早期层和生成的功能,这些功能是后期层所依赖的。仅仅将其连接到不同的层集是毫无用处的。你为什么认为你需要这个?是的,这是一个奇怪的任务。我不想真的做转移学习,我想证明一个我以前训练过的用来解决两个不同领域的反问题的网络实际上并没有学习反问题,只是找到了两个领域之间的映射…权重和偏差应该是你所需要的。你有没有试过从你的图层打印权重(偏差),看看它们是否真的像你希望的那样转移?