【问题标题】:how to use tensorflow saver with multiple models?如何在多个模型中使用 tensorflow saver?
【发布时间】:2016-10-21 01:21:48
【问题描述】:

我很难理解正确使用 tf.train.Saver

我有一个会话,我创建了几个不同且独立的网络模型。所有模型都经过训练,我保存性能最佳的网络供以后使用。

但是,当我稍后尝试恢复模型时,我收到一个错误,这似乎表明某些变量要么没有被保存或恢复:

NotFoundError: Tensor name "Network_8/train/beta2_power" not found in checkpoint files networks/network_0.ckpt

由于某种原因,当我尝试加载 Network_0 的变量时,我被告知我需要 Network_8 的变量信息。

确保仅从多网络会话中保存/恢复正确变量的最佳方法是什么?

我的问题的一部分似乎是,虽然我为每个网络要保存的变量(权重和偏差)创建了一个 dict 对象,但当我设置一个优化器(例如 AdamOptimizer tensorflow)时,会自动创建额外的变量需要初始化。如果您使用 tf.train.Saver 保存所有变量并且您只有一个网络,这很好,但是我正在训练多个网络并且只保存最佳结果。我不知道如何指定变量 tf auto 添加到我的字典中以进行保存。

【问题讨论】:

  • 你能发布你是如何保存和恢复的,否则它基本上只是猜测你的问题是什么。

标签: python tensorflow


【解决方案1】:

我的解决方案是在原始模型和新模型(即 Network_0 和 Network_8)中创建一个具有相同张量名称的 part_saver,它只恢复所需的变量。

part_saver = tf.train.Saver({"W":w,"b":b,...})

在恢复部分模型之前初始化 Network_8 中的所有变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多