Левенберг-Марквардт в тензорном потоке - PullRequest
0 голосов
/ 30 октября 2018

Я хотел бы узнать, пытался ли кто-нибудь реализовать известный алгоритм Левенберга-Марквардта в тензорном потоке? У меня есть ряд проблем при попытке реализовать это во время обновления параметров. В следующем фрагменте кода показана реализация функции обновления:

def func_var_update(cost, parameters):
  # compute gradients or Jacobians for cost with respect to parameters
  dloss_dw = tf.gradients(cost, parameters)[0]
  # Return dimension of gradient vector
  dim, _ = dloss_dw.get_shape()
  # Compute hessian matrix using results of gradients
  hess = []
  for i in range(dim):
        # Compute gradient ot Jacobian matrix for loss function
        dfx_i = tf.slice(dloss_dw, begin=[i,0] , size=[1,1])
        ddfx_i = tf.gradients(dfx_i, parameters)[0] 
        # Get the actual tensors at the end of tf.gradients
        hess.append(ddfx_i)
    hess = tf.squeeze(hess)     
    dfw_new = tf.diag(dloss_dw)
    # Update factor consisting of the hessian, product of identity matrix and Jacobian vector
    JtJ = tf.linalg.inv(tf.ones((parameters.shape[0], parameters.shape[0])) + hess)
    # product of gradient and damping parameter
    pdt_JtJ = tf.matmul(JtJ, dloss_dw)
    # Performing update here
    new_params = tf.assign(parameters, parameters - pdt_JtJ)
  return new_params

И следующий звонок:

def mainfunc()
    with tf.Session():
   .....
       vec_up = sess.run(func_var_update(), feed_dict=....)

приводит к следующей ошибке:

InvalidArgumentError (see above for traceback): Input is not invertible.

Но и размерность якобиана / градиента и гессиана в порядке, когда я печатаю их во время выполнения. Другая проблема, с которой я столкнулся, заключается в невозможности отслеживать параметры после каждого обновления, а затем адаптировать их к личным потребностям, прежде чем вводить их в оптимизатор позже. Я хотел исправить некоторые параметры и вычислить гессенский и якобианский для других, одновременно выполняя оптимизацию. Любая помощь будет оценена.

...