我正在尝试使用TensorFlow概率的Nelder-Mead优化器实现高斯拟合:tfp.optimizer.nelder_mead_minimize()。它不会收敛,同时scipy.optimizer.minimize()可以在不到1秒的计算时间内提供良好的结果。我可能做错了什么,但我不知道是什么?有人可以帮我吗?
我在用 :
python 3.7.3
tensorflow-probability 0.8
tensorflow 2.0
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import tensorflow as tf
import tensorflow_probability as tfp
import numpy as np
import matplotlib as plt
# Define the gaussian model : y = 1/(sigma * sqrt(2 pi)) * exp(- (x-mu)²/(2*sigma²))
pi = np.pi
def model(x, theta):
y = 1/(theta[1]*tf.sqrt(2*pi)) * tf.exp(-(x-theta[0])**2 /(2*theta[1]**2))
return y
# Define the loss (least mean square)
def loss_function(theta, y, x, callback=False, n_iterations=1):
global n_epochs_cb
loss = tf.losses.mean_squared_error(y, model(x, theta))
if …Run Code Online (Sandbox Code Playgroud)