這次要寫的是stl10用于自編碼器
? ? ?? 自編碼缭保,又稱自編碼器(autoencoder),是神經網絡的一種伊履,經過訓練后能嘗試將輸入復制到輸出。自編碼器(autoencoder)內部有一個隱藏層h款违,可以產生編碼(code)表示輸入唐瀑。該網絡可以看作由兩部分組成:一個由函數(shù)h = f(x) 表示的編碼器和一個生成重構的解碼器r = g(h)。
? ? ?? 自編碼器(Autoencoder奠货,AE)是一個3層或者大于3層的神經網絡,將輸入表達X編碼為一個新的表達Y座掘,然后再將Y解碼回X递惋。這是一個非監(jiān)督學習算法,使用反向傳播算法來訓練網絡使得輸出等于輸入溢陪。當向網絡中添加一些限制時萍虽,可以學到一些關于輸入表達的有趣結構。當隱含層節(jié)點數(shù)d比輸入層節(jié)點數(shù)n小時形真,可以得到一個輸入的壓縮表達杉编。當d比n大時,添加一些限制咆霜,比如稀疏限制邓馒,會得到類似于稀疏編碼的結果。
? ? ? ? 傳統(tǒng)自編碼器被用于降維或特征學習蛾坯。近年來光酣,自編碼器與潛變量模型理論的聯(lián)系將自編碼器帶到了生成式建模的前沿。自編碼器可以被看作是前饋網絡的一個特例脉课,并且可以使用完全相同的技術進行訓練救军,通常使用小批量梯度下降法(其中梯度基于反向傳播計算) 。不同于一般的前饋網絡倘零,自編碼器也可以使用再循環(huán)(recirculation)訓練 (Hinton and McClelland, 1988)唱遭,這種學習算法基于比較原始輸入的激活和重構輸入的激活。
下面介紹stl10
用于非監(jiān)督學習噠數(shù)據(jù)集
測試協(xié)議?
我們建議采用以下標準化測試方案來報告結果:?
(1)對未貼標簽的進行無監(jiān)督培訓呈驶。?
(2)使用培訓數(shù)據(jù)中100個示例的10倍(預定義)對標記數(shù)據(jù)進行監(jiān)督培訓拷泽。提供了用于每個褶皺的示例的索引。?
(3)報告完整測試集的平均精度袖瞻。?
二進制文件(來自Martin Tutek的python代碼)?
(1)二進制文件分為數(shù)據(jù)文件和帶后綴的標簽文件:train_x.bin跌穗、train_y.bin、test_x.bin和test_y.bin虏辫。
(2)在每個值中蚌吸,這些值存儲為uint8的壓縮數(shù)組。圖像以列主順序存儲砌庄,一次存儲一個通道羹唠。也就是說(RGB)奕枢,前96*96值為紅色通道,后96*96值為綠色佩微,最后一個值為藍色缝彬。標簽在1到10之間。
(3)未標記的數(shù)據(jù)集unlabeled.bin的格式相同哺眯,但沒有“y.bin”文件谷浅。 包含一個class_names.txt文件供參考,每行一個類名奶卓。 文件fold_indexes.txt包含用于每個訓練折疊的示例的(零基)索引一疯。第一行包含第一個折疊、第二個折疊夺姑、第二個折疊等的索引墩邀。?
感謝Martin Tutek讓python代碼加載/查看stl-10!Python代碼?
呀盏浙,擋不住我發(fā)芽眉睹!
以下是STL_10的數(shù)據(jù)內部:
解壓
tar –xvf file.tar //解壓 tar包
tar -xzvf file.tar.gz //解壓tar.gz
tar -xjvf file.tar.bz2?? //解壓 tar.bz2
tar –xZvf file.tar.Z?? //解壓tar.Z
unrar e file.rar //解壓rar
unzip file.zip //解壓zip
總結
1菩鲜、*.tar 用 tar –xvf 解壓
2园细、*.gz 用 gzip -d或者gunzip 解壓
3、*.tar.gz和*.tgz 用 tar –xzf 解壓
4接校、*.bz2 用 bzip2 -d或者用bunzip2 解壓
5猛频、*.tar.bz2用tar –xjf 解壓
6、*.Z 用 uncompress 解壓
7蛛勉、*.tar.Z 用tar –xZf 解壓
8鹿寻、*.rar 用 unrar e解壓
9、*.zip 用 unzip 解壓
下面開始看代碼:
ser = serial.Serial(0) 是打開第一個串口(實例化一個串口)
? ? ? 好復雜诽凌,決定放棄毡熏,突然想起來mttk這個人已經和stl_10數(shù)據(jù)集進行了斗爭,那么直接跑一下它的代碼吧侣诵。進行了一些修改痢法。(主要是狱窘,把下載數(shù)據(jù)集注釋掉了,因為我已經下載過數(shù)據(jù)集了财搁,所以把數(shù)據(jù)的path進行了更改蘸炸,其他部分沒有改動)好啦,就運行好了尖奔,人家已經把處理好搭儒,分好類的img存儲起來, 存儲在一個叫做img的文件夾中提茁,具體如下:
下面開始手撕代碼:
獅虎解答:可能是如果直接imread的話,就是(2甘凭,0稀拐,1)火邓,但是這個數(shù)據(jù)集是數(shù)組丹弱,所以可能就不太一樣。
獅虎給我講了AAE铲咨,我覺得很有道理躲胳,要好好學習,學著獅虎一樣纤勒,積極思考~
該數(shù)組的大小為5000:
還有一部分代碼是為了獲取Python版本號:
再來看幾個新出現(xiàn)的import
import os, sys, tarfile, errno
import os:os 模塊在運維工作中是很常用的一個模塊孤钦。通過os模塊調用系統(tǒng)命令。os模塊可以跨平臺使用纯丸。
這是本例子中的應用
import errno:獲取python中異常類型的錯誤列表(Errno)
import tarfile:tarfile模塊是Python的標準模塊之一偏形,能夠方便讀取tar歸檔文件,還可以處理使用gzip和bz2壓縮歸檔文件tar.gz和tar.bz2觉鼻。
tarfile的語法格式:
tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)
import? sys:系統(tǒng)相關的信息模塊 import sys?
??? sys.argv是一個list,包含所有的命令行參數(shù).?
??? sys.stdout sys.stdin sys.stderr 分別表示標準輸入輸出,錯誤輸出的文件對象.?
??? sys.stdin.readline() 從標準輸入讀一行 sys.stdout.write("a") 屏幕輸出a?
??? sys.exit(exit_code) 退出程序?
??? sys.modules 是一個dictionary俊扭,表示系統(tǒng)中所有可用的module?
??? sys.platform 得到運行的操作系統(tǒng)環(huán)境?
??? sys.path 是一個list,指明所有查找module,package的路徑.?
那就讓我們站在巨人的肩膀上统扳,利用已經處理好的數(shù)據(jù)喘帚,開心滴做研究吧~