【问题标题】:Not passing a value for a placeholder in tensorflow, why isn't it allowed?没有在张量流中为占位符传递值,为什么不允许?
【发布时间】:2016-11-18 01:25:13
【问题描述】:

我有 3 个模型使用相同的输入,但产生 3 个独特的输出(1 个分类器,2 个回归)。我将 3 个中的 2 个组合成具有 2 个损失函数的 1 个模型,并且看到准确度/RMSE 有显着提高。

我正在尝试将第 3 个损失函数组合到模型中,因此我有 1 个模型和 3 个共享许多参数的损失函数。

第三个损失函数只适用于一半的数据。我测试了将标签标准化为 0-mean-unit-variance 并使用 0 表示它们不适用于损失函数 C 的标签,但在某些情况下这会使结果偏向 0。

我现在正在尝试对损失函数 A 和 B 以及来自完整数据集的批次进行交替优化,对比所有 3 个损失函数 A、B 和 C 以及适合损失 C(和 A&B)的批次。就我的问题而言,这样做是合乎逻辑的。

我的问题:

  • Tensorflow 要求传入图中定义的所有占位符。但是,我在此特定优化步骤中没有使用该张量。这是预期的行为吗?我应该在这里传递一个虚拟变量来安抚TF吗?我想知道我是否遗漏了一个重要的细节。

【问题讨论】:

  • 我认为它应该只需要那些在你正在运行的操作的计算图中是父级的。我已经运行了一个小例子,它的工作原理应该是这样,但是当你有一个复杂的图表时,对于 tensorflow 的依赖关系的计算可能会变得很棘手。
  • 我认为您可能是对的,我现在正在调查依赖项中的错误。谢谢。
  • 图表可能很复杂,实际上存在一些依赖关系,但您没有意识到。如果您只需要运行图表的一部分,也可以尝试部分运行。

标签: tensorflow


【解决方案1】:

依赖于张量板,我对所有损失函数进行了汇总操作,强制执行它们。

我使用 tf.add_to_collection() 将汇总操作分成组以收集不同的汇总操作,然后使用 for 循环将它们添加到张量列表中以进行适当的处​​理。

这是我发现的另一个依赖项,它只是一个错误。 @Sygi 和 @Fake 是正确的,你不应该仅仅因为它存在于图中就需要传入一个在特定计算中没有使用的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    相关资源
    最近更新 更多