我想了解对训练好的TensorFlow神经网络进行回归分析的最佳方法是什么。
具体来说,我正在寻找如何从训练好的神经网络中找到更多的最大值/最小值(相当于从回归曲线中找到最大值/最小值)。显然,一个简单的方法是“尝试”所有可能的组合,并检查结果集中的最大值/最小值,但当有多个输入和依赖变量时,测试所有组合很快就会成为巨大的资源消耗。
有没有办法使用训练好的TensorFlow神经网络来进行这些进一步的分析?
回答:
由于网络是增量训练的,你可以增量地找到最大值。
假设你有一个输入大小为100的神经网络(例如,10×10的图像)和一个大小为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.1update_op = input.assign_add(learning_rate * grads)