【问题标题】:Max/min of trained TensorFlow NN [closed]训练的 TensorFlow NN 的最大值/最小值 [关闭]
【发布时间】:2016-07-06 13:55:11
【问题描述】:

我想了解对经过训练的 TensorFlow 神经网络进行进一步分析以进行回归的最佳方法。

具体来说,我正在研究如何从经过训练的神经网络中找到更多的最大值/最小值(相当于从回归曲线中找到最大值/最小值)。简单的方法显然是“尝试”所有可能的组合并检查结果集的最大值/最小值,但是当有多个输入和因变量时,测试所有组合很快就会变成一个巨大的资源汇。

有没有办法使用经过训练的 TensorFlow 神经网络来进行这些进一步的分析?

【问题讨论】:

    标签: machine-learning artificial-intelligence tensorflow


    【解决方案1】:

    随着网络是增量训练的,您可以逐步找到最大值。

    假设您有一个输入大小为 100(例如 10x10 图像)和大小为 1 的标量输出(例如给定任务的图像得分)的神经网络。
    您可以从随机噪声开始逐步修改输入,直到获得输出的局部最大值。您所需要的只是输出相对于输入的梯度:

    input = tf.Variable(tf.truncated_normal([100], mean=127.5, stddev=127.5/2.))
    output = model(input)
    
    grads = tf.gradients(output, input)
    learning_rate = 0.1
    update_op = input.assign_add(learning_rate * grads)
    

    【讨论】:

    • 看起来很有前途,我不知道在TF中可以这么容易地获得渐变。只是为了我的理解:你基本上是建议在训练的网络上运行另一个“GradientDescent”或“GradientAscent”(直到梯度 = 0)?
    • 是的,但您只能手动更新输入,因此网络的所有权重都保持不变。收敛应该更容易,因为所有参数都更少。
    【解决方案2】:

    ANN 不是可以分析检查的东西。它有时具有数百万个权重和数千个神经元、不同类型的非线性激活函数、卷积和最大池化层......你无法通过分析确定任何关于它的东西。实际上,这就是网络被增量训练的原因。

    【讨论】:

    • 感谢您的帮助,但我并不是在问是否可以使用分析方法。我的问题更多的是关于替代的、可能基于算法的解决方案。
    • 知道了。好吧,我相信你可以依靠 Olivier 的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    相关资源
    最近更新 更多