1. 程式人生 > 程式設計 >基於Tensorflow讀取MNIST資料集時網路超時的解決方式

基於Tensorflow讀取MNIST資料集時網路超時的解決方式

最近在學習TensorFlow,比較煩人的是使用tensorflow.examples.tutorials.mnist.input_data讀取資料

from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets('/temp/mnist_data/')
X = mnist.test.images.reshape(-1,n_steps,n_inputs)
y = mnist.test.labels

基於Tensorflow讀取MNIST資料集時網路超時的解決方式

時,經常出現網路連線錯誤

解決方法其實很簡單,這裡我們可以看一下input_data.py的原始碼(這裡擷取關鍵部分)

def maybe_download(filename,work_directory):
 """Download the data from Yann's website,unless it's already here."""
 if not os.path.exists(work_directory):
 os.mkdir(work_directory)
 filepath = os.path.join(work_directory,filename)
 if not os.path.exists(filepath):
 filepath,_ = urllib.request.urlretrieve(SOURCE_URL + filename,filepath)
 statinfo = os.stat(filepath)
 print('Successfully downloaded',filename,statinfo.st_size,'bytes.')
return filepath

可以看到,程式碼會先檢查檔案是否存在,如果不存在再進行下載,那麼我是不是自己下載資料不就行了?

MNIST的資料集是從Yann LeCun教授的官網下載,下載完成之後修改一下我們讀取資料的程式碼,加上我們下載的路徑即可

from tensorflow.examples.tutorials.mnist import input_data
import os

data_path = os.path.join('.','temp','data')
mnist = input_data.read_data_sets(datapath)
X = mnist.test.images.reshape(-1,n_inputs)
y = mnist.test.labels

測試一下

基於Tensorflow讀取MNIST資料集時網路超時的解決方式

成功!

補充知識:在tensorflow的使用中,from tensorflow.examples.tutorials.mnist import input_data報錯

最近在學習使用python的tensorflow的使用,使用編輯器為spyder,在輸入以下程式碼時會報錯:

from tensorflow.examples.tutorials.mnist import input_data

報錯內容如下:

from tensorflow.python.autograph.lang.special_functions import stack
ImportError: cannot import name 'stack'

為了解決這個問題,在

File "K:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\autograph_init_.py"檔案中直接把
from tensorflow.python.autograph.lang.special_functions import stack

這一行註釋掉了,問題並沒有解決。然後又把下面一行註釋掉了:

from tensorflow.python.autograph.lang.special_functions import tensor_list

問題解決,但報了一大頓warning:

WARNING:tensorflow:From C:/Users/phmnku/.spyder-py3/tensorflow_prac/classification.py:4: 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 K:\Anaconda3\envs\tensorflow\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 K:\Anaconda3\envs\tensorflow\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 K:\Anaconda3\envs\tensorflow\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 K:\Anaconda3\envs\tensorflow\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 K:\Anaconda3\envs\tensorflow\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.
WARNING:tensorflow:From K:\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\util\tf_should_use.py:189: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.
Instructions for updating:
Use `tf.global_variables_initializer` instead.

但是程式好歹能用了

以上這篇基於Tensorflow讀取MNIST資料集時網路超時的解決方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。