【发布时间】:2021-09-23 11:10:11
【问题描述】:
有没有办法在 tensorflow v1 中找到函数的逆神经网络表示?我需要它来找到我正在解决的优化问题中的最佳函数。
确切地说,通过最小化计算为近似最优函数 C*(编码为神经网络对象)与值函数 V*(编码为另一个神经网络对象)。
我的问题是我不知道如何在 tensorflow 中写 V* 的逆,因为我找不到像 tf.inverse() 这样的东西。
任何帮助深表感谢。谢谢。
【问题讨论】:
有没有办法在 tensorflow v1 中找到函数的逆神经网络表示?我需要它来找到我正在解决的优化问题中的最佳函数。
确切地说,通过最小化计算为近似最优函数 C*(编码为神经网络对象)与值函数 V*(编码为另一个神经网络对象)。
我的问题是我不知道如何在 tensorflow 中写 V* 的逆,因为我找不到像 tf.inverse() 这样的东西。
任何帮助深表感谢。谢谢。
【问题讨论】:
除非我对情况有误解,否则我认为不可能以普遍的方式做到这一点。许多函数没有完美的逆。举个简单的例子,想象一个计算 x2 的 square(x) 函数。你可能会认为相反的结果是sqrt(y),但实际上“正确”的结果可能是sqrt(y) 或-sqrt(y),无法判断哪个是正确的。
同样,对于大多数神经网络,我认为不可能找到“真正的”数学逆。有一些架构试图同时训练神经网络及其逆(自动编码器和 BiGAN/ALI 浮现在脑海中),对于某些网络,可能可以凭经验训练逆,但这些可能具有极其不同的准确度水平,具体取决于很大程度上取决于许多因素。
根据您对 V* 的控制程度,您可以将其设计为在数学上可逆(然后您必须手动编码逆),或者您可以使它是一个不基于神经网络的更简单的模型。但是,如果 V* 是一个任意的预先存在的网络,那么您可能就不走运了。
进一步阅读:
【讨论】: