Я знаю, что функциональные API, такие как tf.layers.dense, исчезнут в TF 2.0. Однако их альтернативы, tf.keras.layers, несовместимы с другими компонентами TF 1.x, например, они даже не поддерживают область видимости переменных (# 27016). Поэтому я буду придерживаться устаревших API в TF 1.x.
Не могли бы вы удалить отвратительные "устаревшие" предупреждающие сообщения вроде этого: xxx (from tensorflow.python.layers.core) is deprecated and will be removed in a future version. Use keras.layers.xxx instead.
Вы можете использовать это: -
импорт ОС
импортировать тензорный поток как tf
os.environ ['TF_CPP_MIN_LOG_LEVEL'] = '3'
Подробно: -
0 = все сообщения регистрируются (поведение по умолчанию)
1 = сообщения INFO не печатаются
2 = сообщения ИНФОРМАЦИЯ и ПРЕДУПРЕЖДЕНИЕ не печатаются
3 = сообщения INFO, WARNING и ERROR не печатаются
это то, что я использую годами
он не может остановить предупреждение об устаревании
Кстати, перед тем как отказаться от старых компонентов, не могли бы вы дополнить текущую функциональность? См. №27042. Похоже, что TF очень хорошо исключает широко используемые функции, но не исправляет свои слабые места.
Сообщения об устаревании необходимы для информирования людей, которые хотят использовать актуальную версию TensorFlow, о том, что произойдет в будущем, и дать им время адаптироваться.
Таким образом, мы не сможем удалить эти сообщения. Вы можете отключить их для себя с помощью этого частного API.
import tensorflow.python.util.deprecation as deprecation
deprecation._PRINT_DEPRECATION_WARNINGS = False
Спасибо
См. # 27045, есть предложения?
Этот код дал мне ошибку:
import tensorflow.python.util.deprecation as deprecation
deprecation._PRINT_DEPRECATION_WARNINGS = False
AttributeError: module 'tensorflow' has no attribute 'python'
Но изменение строки импорта заставило ее работать (и при желании подавить предупреждения об устаревании):
from tensorflow.python.util import deprecation
deprecation._PRINT_DEPRECATION_WARNINGS = False
Спасибо
@ skylogic004 это из недавней ночной сборки из исходников недавнего мастера?
@mihaimaruseac О, я использую tf 1.13 от anaconda (я не знаю, из какой ветки и сборки он был изначально, извините, но, может быть, этой информации для вас достаточно?).
$ python
Python 3.6.6 | packaged by conda-forge | (default, Jul 26 2018, 11:48:23) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> tf.__version__
'1.13.1'
$ conda list | grep tensor
tensorboard 1.13.1 py36h33f27b4_0
tensorflow 1.13.1 gpu_py36h1635174_0
tensorflow-base 1.13.1 gpu_py36h0fff12a_0
tensorflow-estimator 1.13.0 py_0
tensorflow-gpu 1.13.1 h0d30ee6_0
Ссылка на пакет anaconda: https://anaconda.org/anaconda/tensorflow-gpu
Тогда это не то, о чем мне следует беспокоиться (полный контекст: за последнюю неделю произошли некоторые сбои при импорте из-за некоторых изменений, которые я внес; но это только в мастер-коде, что, похоже, не так)
Предупреждения об устаревании важны для разработчиков. Возможно, они не так уж и полезны для пользователей. Поэтому бывают ситуации, когда их желательно выключить.
В Python есть sys.warnoptions
который, например, может быть установлен через PYTHONWARNINGS
, например:
PYTHONWARNINGS=ignore
.
Как указывалось ранее, у TensorFlow есть собственная опция TF_CPP_MIN_LOG_LEVEL
.
И есть также API журналирования TensorFlow Python (который, как я считал, работал раньше):
import tensorflow as tf
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)
То, что ни один из вышеперечисленных вариантов не предотвращает печать предупреждающих сообщений, кажется ошибкой.
Флаг _PRINT_DEPRECATION_WARNINGS
кажется внутренним и может быть удален в любой момент.
РЕДАКТИРОВАТЬ: Извинения, я запутал numpy FuturreWarning для предупреждений tenorflow. Последний вариант установки уровня ведения журнала обычно должен работать.
На 1.14.0
работает только это:
import tensorflow as tf
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)
Для версии 1.14 и новее попробуйте следующее:
try:
from tensorflow.python.util import module_wrapper as deprecation
except ImportError:
from tensorflow.python.util import deprecation_wrapper as deprecation
deprecation._PER_MODULE_WARNING_LIMIT = 0
Во всяком случае, это внутреннее и может измениться.
Или переключитесь на TF2.0, где предупреждения об устаревании удалены (по мере необходимости).
Если вы не используете хороший набор IDE: p
Единственное, что заставило меня откатиться, была проблема с автозаполнением, поэтому эти запросы на подавление действительны imo.
Автозаполнение в основном решено
Пробовал все, что было предложено:
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import tensorflow as tf
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)
from tensorflow.python.util import deprecation
deprecation._PRINT_DEPRECATION_WARNINGS = False
try:
from tensorflow.python.util import module_wrapper as deprecation
except ImportError:
from tensorflow.python.util import deprecation_wrapper as deprecation
deprecation._PER_MODULE_WARNING_LIMIT = 0
Тем не менее, есть куча предупреждений.
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:517: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:518: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:519: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:520: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:541: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:542: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:543: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:544: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:545: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:550: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
TF version 1.14.0
Ubuntu 16.04
Python 3.6.8
@ pyotr777 Для встроенных предупреждений python вы должны использовать следующее для подавления:
warnings.filterwarnings('ignore', category=DeprecationWarning)
warnings.filterwarnings('ignore', category=FutureWarning)
@ pyotr777 они исходят от numpy. Вы используете numpy-версию, которая немного несовместима с используемой вами версией TF.
Если вы рискуете получить больше голосов против, перейдите на версию 2.0.
FutureWarning
import warnings
warnings.filterwarnings('ignore', category=DeprecationWarning)
warnings.filterwarnings('ignore', category=FutureWarning)
не подавлял
/usr/local/lib/python3.7/site-packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
Для меня это сработало для предупреждения t2.0
import tensorflow as tf
tf.get_logger().warning('test')
# WARNING:tensorflow:test
tf.get_logger().setLevel('ERROR')
tf.get_logger().warning('test')
FYI Вход в TensorFlow изменен, поскольку TF_CPP_MIN_LOG_LEVEL больше не работает
Тем не менее, есть куча предупреждений.
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: передача (type, 1) или '1type' в качестве синонима типа устарела; в будущей версии numpy он будет пониматься как (type, (1,)) / '(1,) type'.
_np_qint8 = np.dtype ([("qint8", np.int8, 1)])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:517: FutureWarning: передача (type, 1) или '1type' в качестве синонима типа устарела; в будущей версии numpy он будет пониматься как (type, (1,)) / '(1,) type'.
_np_quint8 = np.dtype ([("quint8", np.uint8, 1)])
Попробуйте по очереди изменить 1 на 0, например: _np_qint8 = np.dtype ([("qint8", np.int8, 1)]) на _np_qint8 = np.dtype ([("qint8", np.int8 , 0)]), который мне подходит
@TiwaPhil https://github.com/tensorflow/tensorflow/issues/27023#issuecomment -545991801
Вы используете numpy-версию, которая немного несовместима с используемой вами версией TF.
Для меня работал ставить
import warnings
warnings.filterwarnings('ignore',category=FutureWarning)
до
import tensorflow as tf
и весь другой импорт.
У меня TF 1.14.0 и numpy 1.18.1.
перед импортом tensorflow вы должны реализовать:
предупреждения об импорте
warnings.filterwarnings ('игнорировать', категория = FutureWarning)
warnings.filterwarnings ('игнорировать', category = DeprecationWarning)
он работает для tensorflow == 1.12.0, numpy == 1.18.1, python 3.6
Я пробовал это:
import warnings
warnings.filterwarnings('ignore',category=FutureWarning)
warnings.filterwarnings('ignore', category=DeprecationWarning)
И это не сработало для меня, когда я запускал python в неинтерактивном режиме tensorflow==1.14.0
, numpy==1.18.1
, python==3.6.10
, но он работал в интерактивном сеансе.
Я обнаружил, что следующее работает, когда я запускаю python как в интерактивном, так и в неинтерактивном режиме. При использовании tensorflow 2.X вы можете использовать:
import tensorflow as tf
tf.logging.set_verbosity(tf.logging.ERROR)
И при использовании tensorflow 1.X (работал у меня с 1.14):
import tensorflow as tf
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)
Я использую tf 1.13.1
Это работает:
import tensorflow as tf
tf.logging.set_verbosity(tf.logging.ERROR)
.compat.v1
не требуется.
Я перепробовал все методы, но ни один из них не работал в ноутбуке jupyter ...
warnings.filterwarnings('ignore',category=FutureWarning)
Это может игнорировать предупреждения при импорте тензорного потока, но все еще существует много-много-много WARN, если я загружаю модель ...
Самый полезный комментарий
На
1.14.0
работает только это: