У меня есть несколько тестов, которые работают с графиком и сессиями. Я также хочу написать несколько небольших тестов с активным режимом, чтобы легко проверить некоторые функции. Например:
def test_normal_execution():
matrix_2x4 = np.array([[1, 2, 3, 4], [6, 7, 8, 9]])
dataset = tf.data.Dataset.from_tensor_slices(matrix_2x4)
iterator = dataset.make_one_shot_iterator()
first_elem = iterator.get_next()
with tf.Session() as sess:
result = sess.run(first_elem)
assert (result == [1, 2, 3, 4]).all()
sess.close()
В другом файле:
def test_eager_execution():
matrix_2x4 = np.array([[1, 2, 3, 4], [6, 7, 8, 9]])
tf.enable_eager_execution()
dataset = tf.data.Dataset.from_tensor_slices(matrix_2x4)
iterator = dataset.__iter__()
first_elem = iterator.next()
assert (first_elem.numpy() == [1, 2, 3, 4]).all()
Есть ли способ к этому? Я получаю ValueError: tf.enable_eager_execution must be called at program startup.
, когда пытаюсь выполнить тест, выполненный с нетерпением. Я использую pytest
для запуска своих тестов.
1012 * редактировать *:
С небольшой помощью принятого ответа я создал декоратор, который прекрасно работает с нетерпеливым режимом и приборами pytest:
def run_eagerly(func):
@functools.wraps(func)
def eager_fun(*args, **kwargs):
with tf.Session() as sess:
sess.run(tfe.py_func(func, inp=list(kwargs.values()), Tout=[]))
return eager_fun