【问题标题】:Warning: Please use alternatives such as official/mnist/dataset.py from tensorflow/models警告:请使用 tensorflow/models 中的官方/mnist/dataset.py 等替代方案
【发布时间】:2018-09-28 19:40:18
【问题描述】:

我正在使用 Tensorflow 做一个简单的教程,我刚刚安装了它应该更新它,首先我使用以下代码加载 mnist 数据:

import numpy as np
import os
from tensorflow.examples.tutorials.mnist import input_data
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'

mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
train_data = mnist.train.images  # Returns np.array
train_labels = np.asarray(mnist.train.labels, dtype=np.int32)
eval_data = mnist.test.images  # Returns np.array
eval_labels = np.asarray(mnist.test.labels, dtype=np.int32)

但是当我运行它时,我收到以下警告:

WARNING:tensorflow:From C:\Users\user\PycharmProjects\TensorFlowRNN\venv\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\base.py:198: retry (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.
Instructions for updating:
Use the retry module or similar alternatives.
WARNING:tensorflow:From C:/Users/user/PycharmProjects/TensorFlowRNN/sample.py:5: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use alternatives such as official/mnist/dataset.py from tensorflow/models.
WARNING:tensorflow:From C:\Users\user\PycharmProjects\TensorFlowRNN\venv\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.
Instructions for updating:
Please write your own downloading logic.
WARNING:tensorflow:From C:\Users\user\PycharmProjects\TensorFlowRNN\venv\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use tf.data to implement this functionality.
Extracting MNIST_data/train-images-idx3-ubyte.gz
WARNING:tensorflow:From C:\Users\user\PycharmProjects\TensorFlowRNN\venv\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use tf.data to implement this functionality.
Extracting MNIST_data/train-labels-idx1-ubyte.gz
WARNING:tensorflow:From C:\Users\user\PycharmProjects\TensorFlowRNN\venv\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\mnist.py:110: dense_to_one_hot (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use tf.one_hot on tensors.
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
WARNING:tensorflow:From C:\Users\user\PycharmProjects\TensorFlowRNN\venv\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use alternatives such as official/mnist/dataset.py from tensorflow/models.

我使用了 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' 行,它应该避免收到警告,并尝试了其他替代方法来获取 mnist,但是总是出现相同的警告,有人可以帮我弄清楚这是否发生了?

PD:我在 Windows 10 中使用 Python 3.6,以防万一。

【问题讨论】:

    标签: python python-3.x tensorflow


    【解决方案1】:

    你可以像这样使用tf.logging module

    import numpy as np
    
    import tensorflow as tf
    old_v = tf.logging.get_verbosity()
    tf.logging.set_verbosity(tf.logging.ERROR)
    
    from tensorflow.examples.tutorials.mnist import input_data
    
    mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
    train_data = mnist.train.images  # Returns np.array
    train_labels = np.asarray(mnist.train.labels, dtype=np.int32)
    eval_data = mnist.test.images  # Returns np.array
    eval_labels = np.asarray(mnist.test.labels, dtype=np.int32)
    
    tf.logging.set_verbosity(old_v)
    

    【讨论】:

    • 谢谢你,在此之后我只收到一个关于重试警告的小警告,但这对其余的人来说是个窍门。
    • @JorgeRodriguezMolinuevo 我没有从上面的代码中得到任何警告。我猜该警告来自tf.logging 以外的记录器。要关闭它,您需要找到相应的记录器。
    • 我如何或在哪里可以找到该记录器?
    • @JorgeRodriguezMolinuevo 这取决于您如何获得警告以及警告是什么。确实,这可能很困难。如果警告确实来自logging 模块,您可以尝试logging.Logger.manager.loggerDict 了解那里的所有记录器。我不建议对所有记录器进行全局设置,因为这可能会改变你不想要的东西。但是logging.basicConfig(level=logging.ERROR) 可能会帮助你关闭所有警告。
    【解决方案2】:

    tensorflow.examples.tutorials 现已弃用,建议使用tensorflow.keras.datasets,如下所示:

    import tensorflow as tf
    mnist = tf.keras.datasets.mnist
    (X_train, y_train), (X_test, y_test) = mnist.load_data()
    

    https://www.tensorflow.org/api_docs/python/tf/keras/datasets/mnist/load_data

    【讨论】:

    • 请注意,要使这与被替换的呼叫相媲美,您可能必须在图像上添加 X = X.reshape((-1, 28 * 28)),并添加 y_one_hot = np.zeros((y.shape[0], 10)); y_one_hot[np.arange(y.shape[0]), y] = 1 以获取 one-hot 标签。
    • 如果您遇到代理错误,请从 link 手动下载 mnist 文件并使用 import numpy as np data = np.load('mnist.npz') (X_train, y_train), (X_test, y_test) = (data['x_train'], data['y_train']), (data['x_test'], data['y_test'])。最后,使用@CNugteren 答案重塑和应用 onehot 编码。
    • 你也应该标准化它:x_train, x_test = x_train / 255.0, x_test / 255.0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    相关资源
    最近更新 更多