【问题标题】:Keras reset layer numbersKeras 重置层数
【发布时间】:2018-03-06 04:04:25
【问题描述】:

Keras 将递增的 ID 编号分配给相同类型的层,例如max_pooling1d_7max_pooling1d_8max_pooling1d_9等我的代码的每次迭代都会构建一个新模型,从model = Sequential() 开始,然后通过model.add() 添加层。即使每个循环都会创建一个新的 Sequential 对象,层 ID 编号仍会从前一个循环继续递增。由于我的流程长时间运行,这些 ID 号可能会变得非常大。我担心这可能会导致一些问题。为什么model = Sequential()没有重置ID?有没有办法重置它们?在每个循环之后,我都没有使用层 ID 号并且可以丢弃它们,但是如何?我正在使用 Tensorflow 后端。

【问题讨论】:

    标签: tensorflow keras keras-layer


    【解决方案1】:

    解决方案,来自Attempting to reset tensorflow graph when using keras, failing

    from keras import backend as K
    K.clear_session()
    

    【讨论】:

    • 这不起作用。在张量流 2.0.重置后创建新模型的层数仍然越来越大。
    【解决方案2】:

    您使用 jupyter 笔记本吗?似乎在您重建模型时,您的 tensorlow 会话不会重新启动。 因为 keras 引用了每个名称的 tensorflow 图,所以有必要继续计数。

    因此,如果您不想重新启动会话,那也没关系。然而,这也意味着,张量流会话变得越来越大,因此重新启动会话可能是理想的方法。 为此重新启动完整的程序/内核。

    【讨论】:

    • 我没有使用jupyter,只是python2.7 + Keras。我正在通过遗传算法发展我的网络。我在每个周期(=世代)之间将大量数据保存在内存中,因此我无法在世代之间重新启动程序/内核,除非我将数据交换到磁盘,这会很慢。
    • 嗯,张量流中有一些功能可以重置会话/图表。上次我收到他们的消息,他们没有正常工作。但也许这现在已经解决了。因此,搜索重置 tensorflow 会话可以帮助您解决问题。 (我明天也可以研究一下)
    • 我刚刚发现了这个并且它有效:stackoverflow.com/questions/45063602/…
    【解决方案3】:

    每次迭代都不应该构建一个新模型。培训应在同一模型中进行。也许发布您的代码以查看可能出现的问题。

    【讨论】:

    • 不,新模型的生成完全是有意的。我的模型会根据其性能通过遗传算法进行演进。
    【解决方案4】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-22
      • 2018-09-12
      • 2019-01-19
      • 1970-01-01
      • 2018-09-22
      • 2017-07-19
      • 2023-03-07
      相关资源
      最近更新 更多