Как Tensorflow 2.0 AutoGraph обрабатывает операции numpy? - PullRequest
0 голосов
/ 17 февраля 2020

Очевидно, TF2.0 Autograph работает с Numpy операциями

Я написал простой пример ниже, и я использую autograph.to_code, чтобы увидеть, что Autograph делает с операцией Numpy. ag__.converted_call, кажется, выполняет работу функций Numpy. Но я не знаю, что происходит при этом преобразованном вызове.

Мне любопытно, как TF сгенерировал граф с Numpy операциями. Преобразует ли TF2.0 все операции Numpy в операции TF? Нужно ли нам беспокоиться о проблемах производительности из-за чрезмерного использования операции Numpy в нашем коде TF2.0?

@tf.function
def run():

    a = np.array([1, 2])
    if a[0] > 1:
        a[0] = 10
        a = a.reshape(-1)
    return tf.convert_to_tensor(a)

print(tf.autograph.to_code(run.python_function))

Это дает вывод:

def tf__run():
  do_return = False
  retval_ = ag__.UndefinedReturnValue()
  with ag__.FunctionScope('run', 'run_scope', ag__.ConversionOptions(recursive=True, user_requested=True, optional_features=(), internal_convert_user_code=True)) as run_scope:
    a = ag__.converted_call(np.array, run_scope.callopts, ([1, 2],), None, run_scope)

    def get_state():
      return a[0],

    def set_state(vals):
      a[0], = vals

    def if_true():
      a_1, = a,
      a_1[0] = 10
      a_1 = ag__.converted_call(a_1.reshape, run_scope.callopts, (-1,), None, run_scope)
      return a_1

    def if_false():
      return a
    cond = a[0] > 1
    a = ag__.if_stmt(cond, if_true, if_false, get_state, set_state, ('a',), ('a[0]',))
    do_return = True
    retval_ = run_scope.mark_return_value(ag__.converted_call(tf.convert_to_tensor, run_scope.callopts, (a,), None, run_scope))
  do_return,
  return ag__.retval(retval_)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...