我正在加载一个之前训练过的keras模型,以用他的权重初始化另一个网络。不幸的是,我加载的模型充满了我的全部记忆,因此无法训练新模型。这是代码:
gc.collect()
我检查了多个帖子,通常clear_session()
或Theodosioss-MacBook-Pro:~ theo$ export M2_HOME=/Users/theo/apache-
maven-3.5.4
可以解决问题,但对我来说,到目前为止还行不通。有想法吗?
PS:我正在使用tensorflow作为后端。
答案 0 :(得分:0)
正如@MatiasValdenegro所说的,tensorflow分配了整个内存,这就是为什么删除模型后看不到差异的原因。因此,我基本上加载了预先训练的模型,创建了新模型,并使用预先训练的模型中的权重来初始化他的权重。之后,我使用del model
和gc.collect()
删除了预训练模型。由于新模型比经过预先训练的模型多一层,因此我不得不减小批处理大小,以免耗尽内存。