Tensorflow: TF 1.x: удалить "устаревшие" предупреждающие сообщения

Созданный на 22 мар. 2019  ·  29Комментарии  ·  Источник: tensorflow/tensorflow

Я знаю, что функциональные 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.

Самый полезный комментарий

На 1.14.0 работает только это:

import tensorflow as tf
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)

Все 29 Комментарий

Вы можете использовать это: -
импорт ОС
импортировать тензорный поток как 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)]), который мне подходит

solve warnings

Вы используете 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, если я загружаю модель ...

Была ли эта страница полезной?
0 / 5 - 0 рейтинги