Machine learning 训练的张量流NN的最大/最小值

Machine learning 训练的张量流NN的最大/最小值,machine-learning,artificial-intelligence,tensorflow,Machine Learning,Artificial Intelligence,Tensorflow,我想了解,最好的方法是对经过训练的TensorFlow神经网络进行进一步的回归分析 具体来说,我正在研究如何从经过训练的神经网络中进一步找到最大值/最小值(相当于从回归曲线中找到最大值/最小值)。简单的方法显然是“尝试”所有可能的组合,并检查结果集的最大/最小值,但当有多个输入和因变量时,测试所有组合可能很快成为一个巨大的资源接收器 有没有办法使用经过训练的TensorFlow神经网络来进行这些进一步的分析?人工神经网络不是可以分析检查的东西。它有时有数百万个权重和数千个神经元、不同类型的非线性

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

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


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

人工神经网络不是可以分析检查的东西。它有时有数百万个权重和数千个神经元、不同类型的非线性激活函数、卷积和最大池层。。你不可能从分析的角度来决定这件事。事实上,这就是为什么网络是增量训练的。

人工神经网络不是可以分析检查的东西。它有时有数百万个权重和数千个神经元、不同类型的非线性激活函数、卷积和最大池层。。你不可能从分析的角度来决定这件事。实际上,这就是网络以增量方式训练的原因。

随着网络以增量方式训练,您可以以增量方式找到最大值

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

随着网络以增量方式进行训练,您可以以增量方式找到最大值

假设您有一个输入大小为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的梯度。仅就我的理解而言:您基本上是建议在经过训练的网络上运行另一个“梯度下降”或“梯度下降”(直到梯度=0)吗?是的,但您仅手动更新输入,因此网络的所有权重保持不变。收敛应该更容易,因为参数更少。看起来很有希望,我不知道有人能如此容易地得到TF中的梯度。仅就我的理解而言:您基本上是建议在经过训练的网络上运行另一个“梯度下降”或“梯度下降”(直到梯度=0)吗?是的,但您仅手动更新输入,因此网络的所有权重保持不变。收敛应该更容易,因为参数更少。