我想了解对经过训练的TensorFlow神经网络进行进一步分析以进行回归的最佳方法是什么。
具体来说,我正在研究如何从训练好的神经网络中找到更多的最大值/最小值(相当于从回归曲线中找到最大值/最小值)。简单的方法是显然"尝试"所有可能的组合并检查结果集的最大值/分钟,但是当具有多个输入和因变量时,测试所有组合可能很快成为巨大的资源汇。
有没有办法使用训练有素的TensorFlow神经网络进行这些进一步的分析?
答案 0 :(得分: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)
答案 1 :(得分:1)
人工神经网络不是可以通过分析检查的东西。它有时有数百万个权重和数千个神经元,不同类型的非线性激活函数,卷积和最大池层。你无法通过分析确定它的任何内容。实际上,这就是网络逐步培训的原因。