Как сбросить инициализацию в TensorFlow 2 - PullRequest
2 голосов
/ 06 января 2020

Если я пытаюсь изменить параллелизм в TensorFlow 2 после инициализации tf.Variable,

import tensorflow as tf
_ = tf.Variable([1])
tf.config.threading.set_inter_op_parallelism_threads(1)

Я получаю сообщение об ошибке

RuntimeError: Параллелизм между операциями не может быть изменен после инициализация.

Я понимаю, почему это может быть, но это (и, возможно, другие факторы) приводят к тому, что мои тесты мешают друг другу. Например,

def test_model():  # this test
   v = tf.Variable([1])
   ...

def test_threading():  # is breaking this test
   tf.config.threading.set_inter_op_parallelism_threads(1)
   ...

Как сбросить состояние TensorFlow, чтобы можно было установить многопоточность?

1 Ответ

1 голос
/ 06 января 2020

Это достижимо "хакерским" способом. Но я бы порекомендовал сделать это правильно (то есть, установив конфигурацию в начале).

import tensorflow as tf
from tensorflow.python.eager import context

_ = tf.Variable([1])

context._context = None
context._create_context()

tf.config.threading.set_inter_op_parallelism_threads(1)

Редактировать : Что подразумевается под настройкой конфигурации в начале,

import tensorflow as tf
from tensorflow.python.eager import context

tf.config.threading.set_inter_op_parallelism_threads(1)
_ = tf.Variable([1])

Но могут быть обстоятельства, когда вы не всегда можете сделать это. Просто указав на обычный способ настройки конфигурации в tf. Поэтому, если ваши обстоятельства не позволяют вам исправить tf.config в начале, вы должны сбросить свой tf.eager.context, как показано в решении выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...