Python 使用TensorFlow在不知道基本函数的情况下,找到量化值映射的数值最小化位置

Python 使用TensorFlow在不知道基本函数的情况下,找到量化值映射的数值最小化位置,python,numpy,tensorflow,optimization,scipy,Python,Numpy,Tensorflow,Optimization,Scipy,我有一个量化的2D函数值图,我不知道它的函数。我想找到这张地图最小值的连续位置 我可以使用scipy轻松地完成这项工作,但我想使用TensorFlow,因为在现实中,我有一个非常复杂的计算图,我想自动导出它,它使用TF就像一个魅力。这基本上需要数值和分析梯度计算的混合 在下面,您会发现一个非常小的例子,它是Rosenbrock函数的形式,它捕获了我无法用TF表示的部分,但在scipy中 使用scipy: 将tensorflow导入为tf 将numpy作为np导入 从scipy.ndimage导入

我有一个量化的2D函数值图,我不知道它的函数。我想找到这张地图最小值的连续位置

我可以使用
scipy
轻松地完成这项工作,但我想使用TensorFlow,因为在现实中,我有一个非常复杂的计算图,我想自动导出它,它使用TF就像一个魅力。这基本上需要数值和分析梯度计算的混合

在下面,您会发现一个非常小的例子,它是Rosenbrock函数的形式,它捕获了我无法用TF表示的部分,但在
scipy

使用scipy

将tensorflow导入为tf
将numpy作为np导入
从scipy.ndimage导入地图坐标
从scipy.optimize导入最小化
xx,yy=np.meshgrid(np.linspace(-2,2,1000),
np.linspace(-3,1,1000))
x0=np.数组([-1.5,-.5])
origin=np.array([-2,-3])
间距=np.数组([4./1000,4./1000])
#我想最小化的量化函数可以是任何东西
罗森布鲁克=((1-xx)**2+100*(yy-xx**2)**2).T
#不是那么简单;)
打印('量化最小值:',
间距*np.Unlavel_索引(np.argmin(rosenbrock),rosenbrock.shape)
+(来源)
戴夫·罗森(x):
idx=((x-原点)/间距)。重塑(1,2)
返回地图坐标(rosenbrock,idx.T)
rosenbrock_grad0,rosenbrock_grad1=np.梯度(rosenbrock)
国防部长罗森德(x):
idx=((x-原点)/间距)。重塑(1,2)
返回np.数组([map_坐标(rosenbrock_grad0,idx.T)[0],
地图坐标(rosenbrock_grad1,idx.T)[0]]
res=minimize(rosen,x0,method='BFGS',jac=rosen\u der,options={'disp':True})
打印('打印连续BFGS结果:',分辨率)
但是如何使用tensorflow?

x_tf=tf.变量(x0)
idx_tf=(x_tf-原点)/间距
#如何将其表示为一个OP,在这里我可以提供渐变
#在a型数值导数中?
f_tf=???
opt_tf=tf.train.AdamOptimizer().minimize(f_tf)
使用tf.Session()作为会话:
对于范围(100)内的i:
会话运行(opt_tf)
打印(“%i:f=%f x=%s%”(i+1,会话.run(f_-tf),会话.run(x_-tf)))

我不完全理解你的问题,但也许你在寻找?我不完全理解你的问题,但也许你在寻找?