TensorFlow знает, что функция существует внутри скрипта до выполнения скрипта, как?

#python #python-3.x #tensorflow #tensorflow2.0

#python #python-3.x #тензорный поток #tensorflow2.0

Вопрос:

Я использую TensorFlow 2.3 и у меня возникла проблема с установленными библиотеками графического процессора, поэтому мои скрипты не запускались. Проблема здесь не в этом, вместо этого странная вещь, которая произошла, заключалась в том, что скрипт не выполнялся, когда определенная функция TensorFlow присутствовала внутри скрипта. Например:

 # test.py
print('The script has started')
import tensorflow as tf
model = tf.keras.Model(...)
model.fit()
  

Всякий раз, когда fit() функция присутствовала, сценарий не выполнялся, даже оператор печати вверху; вместо этого ошибки просто выводились на консоль. Тем не менее, как только я удалил fit() функцию, скрипт работал полностью нормально. Как TensorFlow узнает, что fit() функция присутствует в коде? Обычно я ожидаю, что The script has started будет выведено на консоль, а затем будут выдаваться ошибки. Чего мне здесь не хватает?

Комментарии:

1. Можете ли вы попробовать еще раз с print('The script has started', flush=True) ? Возможно, буфер печати еще не был очищен.

2. Боже мой, это решило проблему! Раньше я думал, что схожу с ума, даже не думал о том, что она не сбрасывается. Спасибо!! Опубликуйте это в качестве ответа, и я отмечу как решаемый, @jakub

Ответ №1:

Буфер, который sys.stdout (файл по умолчанию для print() ) использует, скорее всего, не сбрасывается перед model.fit запуском. Вы можете принудительно очистить этот буфер с помощью flush=True .

 print('The script has started', flush=True)