『壹』 關於anaconda下運行tensorflow中的minst數據集問題
第一步:找到tensorflow-master\tensorflow\examples\tutorials\mnist下的mnist_with_summaries.py文件。找到文件末尾處下面幾行語句。
parser.add_argument('--log_dir', type=str, default='/tmp/tensorflow/mnist/logs/mnist_with_summaries',
help='Summaries log directory')12
我們需要修改以下路徑,比如修改成下面的路徑:
parser.add_argument('--log_dir', type=str, default='C:/tmp/tensorflow/mnist/logs/mnist_with_summaries',
help='Summaries log directory')12
即將訓練時記錄的數據保存在C:/tmp/tensorflow/mnist/logs/mnist_with_summaries路徑下,可以根據實際情況自行修改。
第二步:打開Anaconda Prompt,進入tensorflow-master\tensorflow\examples\tutorials\mnist路徑下,運行命令
python mnist_with_summaries.py
『貳』 如何在tensorflow中運行各個minist python代碼
tensorflow網站上給出了新的使用Anaconda配置和安裝Tensorflow的步驟,經過測試,在國內可以無障礙的訪問。 Anaconda 是一個基於Python的科學計算包集合,目前支持Python 2.7和3.5。
『叄』 如何用python解析mnist
1.我們首先看一下mnist的數據結構:
2.
可以看出在train-images.idx3-ubyte中,第一個數為32位的整數(魔數,圖片類型的數),第二個數為32位的整數(圖片的個數),第三和第四個也是32為的整數(分別代表圖片的行數和列數),接下來的都是一個位元組的無符號數(即像素,值域為0~255),因此,我們只需要依次獲取魔數和圖片的個數,然後獲取圖片的長和寬,最後逐個像素讀取就可以了。
3.如何使用Python解析數據呢? 首先需要安裝python的圖形處理庫PIL,這個庫支持像素級別的圖像處理,對於學習數字圖像處理有很大的幫助。安裝完成之後,就可以進行圖像的解析了。看一下代碼:
4.首先打開文件,然後分別讀取魔數,圖片個數,以及行數和列數,在struct中,可以看到,使用了』>IIII』,這是什麼意思呢?意思就是使用大端規則,讀取四個整形數(Integer),如果要讀取一個位元組,則可以用』>B』(當然,這里用沒用大端規則都是一樣的,因此只有兩個或兩個以上的位元組才有用)。
5.什麼是大端規則呢?不懂的可以網路一下,這個不再贅述(http://ke..com/link?url=Bgg8b0vRr3b_SeGyOl8U4DmAbIQT9swGuNtD_21ctEI_NliqsQ-mKF73YT90EILF2EQy50mEua_M4z6Cma3rmK)
6.然後對於每張圖片,先創建一張空白的圖片,其中的』L』代表這張圖片是灰度圖,最後逐個像素讀取,然後寫進空白圖片里,最後保存圖片,就可以了
7.再來看一下mnist標簽的數據結構:
可以發現,與上面的非常相似,只不過這里每一個位元組變成了標簽而已(標簽大小為0~9)
8.好了,通過上述講解,最後我們可以通過python將mnist解析出來了,看一下效果:
程序源代碼如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PIL import Image
import struct
def read_image(filename):
f = open(filename, 'rb')
index = 0
buf = f.read()
f.close()
magic, images, rows, columns = struct.unpack_from('>IIII' , buf , index)
index += struct.calcsize('>IIII')
for i in xrange(images):
#for i in xrange(2000):
image = Image.new('L', (columns, rows))
for x in xrange(rows):
for y in xrange(columns):
image.putpixel((y, x), int(struct.unpack_from('>B', buf, index)[0]))
index += struct.calcsize('>B')
print 'save ' + str(i) + 'image'
image.save('test/' + str(i) + '.png')
def read_label(filename, saveFilename):
f = open(filename, 'rb')
index = 0
buf = f.read()
f.close()
magic, labels = struct.unpack_from('>II' , buf , index)
index += struct.calcsize('>II')
labelArr = [0] * labels
#labelArr = [0] * 2000
for x in xrange(labels):
#for x in xrange(2000):
labelArr[x] = int(struct.unpack_from('>B', buf, index)[0])
index += struct.calcsize('>B')
save = open(saveFilename, 'w')
save.write(','.join(map(lambda x: str(x), labelArr)))
save.write('\n')
save.close()
print 'save labels success'
if __name__ == '__main__':
read_image('t10k-images.idx3-ubyte')
read_label('t10k-labels.idx1-ubyte', 'test/label.txt')
『肆』 python問題 \readmnist.py 19 IndexError: string index out of range
studen=('xzj','jzx','zxj','jxz'),
這一句中最後的逗號去掉
不去掉的話就相當於studen=(('xzj','jzx','zxj','jxz'),)
這樣studen就是含有兩個元素的tuple,new_studen[0][3]相當於studen[3],所以就超出范圍了
『伍』 用python進行深度學習的學習,以theano的基礎教材學習,提示找不到mnist.pkl.gz,該如何解決
fromos.pathimportexists
print(filename)
print(exists(filename)
先運行這個看看
『陸』 如何將mnist導入到python
安裝完需要額外依賴庫刪除編譯Python所需要庫
yum groupremove "Development tools" --remove-leaves
yum remove zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
gdbm-devel db4-devel libpcap-devel xz-devel --remove-leaves!
『柒』 如何利用mnist進行機器學習
當前深度學習的神經網路架構已經能夠在較低成本下對minist數據集中手寫數據進行較高准確率的識別,而且其端到端的學習過程大大降低了開發者的使用門檻以及學習成本。建議直接上深度學習的方法具體課上知乎去搜「74行Python實現手寫體數字識別」。