Max/min 个训练有素的 TensorFlow NN
Max/min of trained TensorFlow NN
我想了解对经过训练的 TensorFlow 神经网络进行回归分析的最佳方法是什么。
具体来说,我正在研究如何从经过训练的神经网络中进一步找到 maxima/minima(相当于从回归曲线中找到 max/min)。简单的方法显然是 "try out" 所有可能的组合并检查结果集是否为 max/min,但是当有多个输入和因变量时,测试所有组合会很快成为一个巨大的资源池。
有什么方法可以使用经过训练的 TensorFlow 神经网络来进行这些进一步分析吗?
ANNs 不是可以分析检查的东西。它有时有数百万个权重和数千个神经元、不同类型的非线性激活函数、卷积和最大池化层……你无法通过分析确定任何关于它的信息。实际上这就是为什么网络是增量训练的。
随着网络逐渐训练,您可以逐渐找到最大值。
假设您有一个输入大小为 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)
我想了解对经过训练的 TensorFlow 神经网络进行回归分析的最佳方法是什么。
具体来说,我正在研究如何从经过训练的神经网络中进一步找到 maxima/minima(相当于从回归曲线中找到 max/min)。简单的方法显然是 "try out" 所有可能的组合并检查结果集是否为 max/min,但是当有多个输入和因变量时,测试所有组合会很快成为一个巨大的资源池。
有什么方法可以使用经过训练的 TensorFlow 神经网络来进行这些进一步分析吗?
ANNs 不是可以分析检查的东西。它有时有数百万个权重和数千个神经元、不同类型的非线性激活函数、卷积和最大池化层……你无法通过分析确定任何关于它的信息。实际上这就是为什么网络是增量训练的。
随着网络逐渐训练,您可以逐渐找到最大值。
假设您有一个输入大小为 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)