Tensorflow: TF 1.x : supprimer les messages d'avertissement "obsolètes"

Créé le 22 mars 2019  ·  29Commentaires  ·  Source: tensorflow/tensorflow

Je sais que les API fonctionnelles, telles que tf.layers.dense, disparaîtront dans TF 2.0. Cependant, leurs alternatives, tf.keras.layers, ne sont pas compatibles avec les autres composants de TF 1.x, par exemple, ils ne prennent même pas en charge la portée variable (#27016). Je vais donc rester sur les API obsolètes dans TF 1.x.
Pourriez-vous s'il vous plaît supprimer les messages d'avertissement "obsolètes" dégoûtants comme celui-ci : xxx (from tensorflow.python.layers.core) is deprecated and will be removed in a future version. Use keras.layers.xxx instead.

Commentaire le plus utile

Sur 1.14.0 seulement cela fonctionne :

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

Tous les 29 commentaires

Vous pouvez utiliser ceci : -
importer le système d'exploitation
importer tensorflow en tant que tf
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'

En détail :-
0 = tous les messages sont enregistrés (comportement par défaut)
1 = les messages INFO ne sont pas imprimés
2 = les messages INFO et AVERTISSEMENT ne sont pas imprimés
3 = les messages INFO, AVERTISSEMENT et ERREUR ne sont pas imprimés

c'est ce que j'utilise depuis des années
il ne peut pas arrêter l'avertissement de dépréciation

Au fait, avant de déprécier les anciens composants, voudriez-vous compléter la fonctionnalité actuelle ? Voir #27042. Il semble que TF soit très bon pour déprécier les fonctions largement utilisées, mais médiocre pour améliorer ses points faibles

Les messages d'obsolescence sont nécessaires pour informer les personnes qui souhaitent utiliser une version réelle de TensorFlow de ce qui va se passer à l'avenir, et leur donner le temps de s'adapter.

En tant que tel, nous ne pourrons pas supprimer ces messages. Vous pouvez les désactiver vous-même en utilisant cette API privée

import tensorflow.python.util.deprecation as deprecation
deprecation._PRINT_DEPRECATION_WARNINGS = False

Merci
Voir #27045, des suggestions ?

Ce code m'a donné une erreur :

import tensorflow.python.util.deprecation as deprecation
deprecation._PRINT_DEPRECATION_WARNINGS = False
AttributeError: module 'tensorflow' has no attribute 'python'

Mais changer la ligne d'importation l'a fait fonctionner (et supprime les avertissements de dépréciation comme vous le souhaitez):

from tensorflow.python.util import deprecation
deprecation._PRINT_DEPRECATION_WARNINGS = False

Merci

@ skylogic004 est-ce d'un récent nightly/build à partir de la source du maître récent?

@mihaimaruseac Oh, j'utilise tf 1.13 d'anaconda (je ne sais pas de quelle branche et de quelle version il viendrait à l'origine, désolé, mais c'est peut-être assez d'informations pour vous ?).

$ 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

Lien vers le package anaconda : https://anaconda.org/anaconda/tensorflow-gpu

Alors ce n'est pas quelque chose dont je devrais m'inquiéter (contexte complet : au cours de la semaine dernière, il y a eu des échecs sur les importations en raison de certaines modifications que j'ai apportées ; mais ceux-ci ne concernent que le code maître, ce qui ne semble pas être le cas)

Les avertissements de dépréciation sont importants pour les développeurs. Ils peuvent ne pas être très utiles aux utilisateurs. Il existe donc des situations où il est souhaitable de les désactiver.

Python a sys.warnoptions qui pourrait être par exemple défini via PYTHONWARNINGS , par exemple :
PYTHONWARNINGS=ignore .

TensorFlow possède sa propre option TF_CPP_MIN_LOG_LEVEL , comme indiqué précédemment.

Et il y a aussi l'API de journalisation Python TensorFlow (dont je pensais qu'elle fonctionnait auparavant) :

import tensorflow as tf

tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)

Qu'aucune des options ci-dessus n'empêche l'impression des messages d'avertissement semble être un bogue.

Le drapeau _PRINT_DEPRECATION_WARNINGS semble être interne et peut être supprimé à tout moment.

EDIT : Excusez-moi, je confondais les numpy FuturreWarning avec les avertissements de tensorflow. La dernière option pour définir le niveau de journalisation devrait généralement toujours fonctionner.

Sur 1.14.0 seulement cela fonctionne :

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

Pour r1.14 et versions ultérieures, essayez ceci :

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

Quoi qu'il en soit, il est interne et sujet à changement.

Ou passez à TF2.0 où les avertissements de dépréciation sont supprimés (comme non nécessaire).

Sauf si vous utilisez une bonne sélection d'IDE :p
La seule chose qui m'a fait revenir en arrière était le problème de la saisie semi-automatique, donc ces demandes de suppression sont imo valides.

La saisie semi-automatique a été en grande partie résolue

J'ai essayé tout ce qui a été suggéré :

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

Pourtant, ayez une pile d'avertissements.

/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 Pour les avertissements intégrés de python, vous devez utiliser ce qui suit pour supprimer :

warnings.filterwarnings('ignore', category=DeprecationWarning)
warnings.filterwarnings('ignore', category=FutureWarning)

@pyotr777 ceux-ci viennent de numpy. Vous utilisez une version numpy légèrement incompatible avec la version TF que vous utilisez.

Au risque d'obtenir plus de votes négatifs, veuillez passer à 2.0

AvenirAvertissement

import warnings
warnings.filterwarnings('ignore', category=DeprecationWarning)
warnings.filterwarnings('ignore', category=FutureWarning)

n'a pas supprimé

/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)])

Pour moi, cela a fonctionné pour l'avertissement t2.0

import tensorflow as tf
tf.get_logger().warning('test')
# WARNING:tensorflow:test
tf.get_logger().setLevel('ERROR')
tf.get_logger().warning('test')

Pour info, la connexion à TensorFlow a été modifiée car TF_CPP_MIN_LOG_LEVEL ne fonctionne plus

Pourtant, ayez une pile d'avertissements.

/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:516 : FutureWarning : passer (type, 1) ou '1type' comme synonyme de type est déconseillé ; dans une future version de numpy, il sera compris comme (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 : passer (type, 1) ou '1type' comme synonyme de type est déconseillé ; dans une future version de numpy, il sera compris comme (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])

Veuillez essayer un par un pour changer le 1 en 0, par exemple : _np_qint8 = np.dtype([("qint8", np.int8, 1)]) en _np_qint8 = np.dtype([("qint8", np.int8 , 0)]) qui fonctionne pour moi

solve warnings

Vous utilisez une version numpy légèrement incompatible avec la version TF que vous utilisez.

Pour moi, j'ai travaillé en mettant

import warnings
warnings.filterwarnings('ignore',category=FutureWarning)

avant

import tensorflow as tf

et toutes les autres importations.

J'ai TF 1.14.0 et numpy 1.18.1.

avant d'importer tensorflow, vous devez implémenter :
avertissements d'importation
warnings.filterwarnings('ignorer',category=FutureWarning)
warnings.filterwarnings('ignorer', catégorie=Avertissement de dépréciation)
cela fonctionne pour tensorflow==1.12.0, numpy==1.18.1, python 3.6

J'ai essayé ceci :

import warnings
warnings.filterwarnings('ignore',category=FutureWarning)
warnings.filterwarnings('ignore', category=DeprecationWarning)

Et cela n'a pas fonctionné pour moi lorsque j'ai exécuté python de manière non interactive tensorflow==1.14.0 , numpy==1.18.1 , python==3.6.10 , mais cela a fonctionné dans une session interactive.

J'ai trouvé que ce qui suit fonctionnait lorsque j'exécutais python de manière interactive et non interactive. Lorsque vous utilisez tensorflow 2.X, vous pouvez utiliser :

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

Et lors de l'utilisation de tensorflow 1.X (a fonctionné sur 1.14 pour moi):

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

J'utilise tf 1.13.1
Cela marche:

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

.compat.v1 n'est pas requis.

J'ai essayé toutes les méthodes, mais aucune d'entre elles n'a fonctionné dans le cahier jupyter...

warnings.filterwarnings('ignore',category=FutureWarning)
Cela peut ignorer les avertissements lors de l'importation de tensorflow, mais il existe toujours de nombreux WARN si je charge le modèle ...

Cette page vous a été utile?
0 / 5 - 0 notes