2016-07-06 70 views
0

我想了解什么最好的方法是对经过训练的TensorFlow神经网络进行回归分析。经过训练的TensorFlow神经网络的最大值/最小值NN

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

有什么办法可以使用训练好的TensorFlow神经网络来进行这些进一步的分析吗?

回答

2

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

假设您有一个输入大小为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) 
+0

看起来非常有希望,我不知道人们可以很容易地获得TF中的渐变。只是为了我的理解:你基本上是建议在训练过的网络上运行另一个“渐变渐变”或“渐变渐变”(直到渐变= 0)? – Ruehri

+0

是的,但您只手动更新输入,因此网络的所有权重都保持不变。由于参数少,因此收敛应该更容易。 –

1

ANNs不是可以通过分析检查的东西。它有时候有数百万个重量和数千个神经元,不同类型的非线性激活函数,卷积和最大汇集层。没有办法通过分析确定它的任何内容。实际上这就是为什么网络增量式培训。

+0

感谢您的帮助,但我不是问如果分析的方法将是可能的或没有。我的问题更多的是关于替代的,潜在的基于算法的解决方案 – Ruehri

+0

明白了。那么,我相信,你可以依靠奥利维尔的回答。 –