想學習人工智慧,這個的資料集必須掌握,MNIST入門與實戰
學習人工智慧少不了需要一些資料集,例如進行鑑黃的人工智慧少不了一些類似的圖片。進行語音辨識的人工智慧,語料庫是少不了的。對於初學人工智慧的同學常常會為資料集而煩惱。今天我們就介紹一個很簡單,但很有用的資料集,這就是MNIST。這個資料集非常適合我們進行人工智慧相關演算法的學習和練習。
MNIST 資料集是美國國家標準與技術研究所(National Institute of Standards and Technology,簡稱NIST)製作的一個非常簡單的資料集。那麼該資料集是什麼內容呢?其實就是一些手寫的阿拉伯數字(0到9十個數字)。
NIST在製作資料集的時候還是很認真的。資料集中的訓練集 (training set) 由來自 250 個不同人手寫的數字構成,其中 50%是高中學生,50% 來自人口普查局 (the Census Bureau) 的工作人員。測試集(test set) 也是同樣比例的手寫數字資料。
如何下載MNIST資料集
MNIST資料集可從其官網(http://yann.lecun.com/exdb/mnist/ )下載,由於是國外網站,下載可能比較慢。它包含了四個部分:
- 訓練集圖片:train-images-idx3-ubyte.gz (9.9 MB, 解壓縮後47 MB, 包含60,000 個樣本)
- 訓練集標籤:train-labels-idx1-ubyte.gz (29 KB, 解壓縮後60 KB, 包含60,000 個標籤)
- 測試集圖片:t10k-images-idx3-ubyte.gz (1.6 MB, 解壓後7.8 MB, 包含10,000 個樣本)
- #測試集標籤:t10k-labels-idx1-ubyte.gz (5KB, 解壓縮後10 KB, 包含10,000 個標籤)
上述包含兩種類型的內容,一種是圖片,另一種是標籤,圖片與標籤一一對應。但這裡的圖片並非是我們平常看到的圖片文件,而是一個二進位的文件。該資料集以一個二進制的形式對6萬個圖片進行了儲存。標籤則是圖片對應的真是數字。
如下圖所示,本文將資料集下載到本機,並且解壓縮後的結果。為了方便對比,這裡麵包含原始的壓縮包和解壓後的檔案。
資料集的格式簡析
大家已經發現,壓縮包解壓縮後並非一個個的圖片,而是每個壓縮包對應著一個獨立的問題。而在這個文件中儲存著上萬個圖片或是標籤的資訊。那麼這些資訊是如何儲存在這個檔案當中的呢?
其實MNIST的官網給了詳細的描述。以訓練集的圖片檔為例,官網給出的文件格式描述如下:
#從上圖可以看出,前4個32位數是該訓練集的描述資訊。其中第一個是魔數,為固定值0x0803;第二個是圖片的數量,0xea60,也就是60000;第三個和第四個是圖片的大小,也就是圖片是28*28像素。下面則是以一個位元組來描述每個像素。由於該檔案中以一個位元組來描述一個像素,可以知道像素的值可以是從0到255。其中0表示白色,而255表示黑色。
標籤檔案的格式與圖片檔案的類似。前面有兩個32位數,其中第一個是魔數,固定值0x0801;第二個用來描述標籤的數量。接下來的資料是每個標籤的值,用一個位元組表示。這裡表示值的範圍是
對應實際訓練集的標籤檔案的資料如下所示。可以看出與上述格式的描述是一致的。另外,我們可以看出,對應該標籤集,前面幾張圖片表示的數字分別應該是5,0,4,1等等。這裡大家記一下,後面會用到。
關於資料集的文件格式我們了解了,下面我們實際操作一下。
資料集的視覺化處理
知道上述資料的儲存格式後,我們就可以對資料進行解析了。例如下面本文實作了一個小程序,用於解析該圖片集合中的某個圖片,並得到視覺化結果。當然,其實我們可以根據標籤集合的值知道圖片是什麼,這裡只是一個實驗。最終結果是以一個文字檔案儲存的,用字元「Y」表示筆跡,字元「0」表示背景色。具體程式碼很簡單,本文不再贅述。
# -*- coding: UTF-8 -*- def trans_to_txt(train_file, txt_file, index): with open(train_file, 'rb') as sf: with open(txt_file, "w") as wf: offset = 16 + (28*28*index) cur_pos = offset count = 28*28 strlen = 1 out_count = 1 while cur_pos < offset+count: sf.seek(cur_pos) data = sf.read(strlen) res = int(data[0]) #虽然在数据集中像素是1-255表示颜色,这里简化为Y if res > 0 : wf.write(" Y ") else: wf.write(" 0 ") #由于图片是28列,因此在此进行换行 if out_count % 28 == 0 : wf.write("n") cur_pos += strlen out_count += 1 trans_to_txt("../data/train-images.idx3-ubyte", "image.txt", 0)
我們執行上述程式碼,可以得到一個名為image.txt的檔案。可以看到該文件的內容如下。其中紅色筆記是後面添加了,主要是為看的清楚一些。從圖中內容可以看出,這個其實就是手寫的「5」。
前面我們透過原生的Python介面對資料集進行了視覺化的解析。 Python有許多已經實現好的函式庫函數,因此我們可以透過一個函式庫函數簡化上述功能。
基於第三方函式庫解析資料
採用原生的Python介面實作起來略顯複雜。我們知道Python有很多第三方函式庫,因此我們可以藉助第三方函式庫來實現資料集的解析和展示,具體程式碼如下。
# -*- coding: utf-8 -*- import os import struct import numpy as np # 读取数据集,以二维数组的方式返回图片信息和标签信息 def load_mnist(path, kind='train'): # 从指定目录加载数据集 labels_path = os.path.join(path, '%s-labels.idx1-ubyte' % kind) images_path = os.path.join(path, '%s-images.idx3-ubyte' % kind) with open(labels_path, 'rb') as lbpath: magic, n = struct.unpack('>II', lbpath.read(8)) labels = np.fromfile(lbpath, dtype=np.uint8) with open(images_path, 'rb') as imgpath: #解析图片信息,存储在images中 magic, num, rows, cols = struct.unpack('>IIII', imgpath.read(16)) images = np.fromfile(imgpath, dtype=np.uint8).reshape(len(labels), 784) return images, labels # 在终端打印某个图片的数据信息 def print_image(data, index): idx = 0; count = 0; for item in data[index]: if count % 28 == 0: print("") if item > 0: print("33[7;31mY 33[0m", end="") else: print("0 ", end="") count += 1 def main(): cur_path = os.getcwd() cur_path = os.path.join(cur_path, "..data") imgs, labels = load_mnist(cur_path) print_image(imgs, 0) if __name__ == "__main__": main()
上述程式碼中分為兩步,第一步是將資料集解析到數組中,第二步是對數組中的某個圖片進行顯示。這裡顯示也是透過文字的方式程序,只不過不是儲存在文件中,而是列印在終端。例如我們依然列印第一張圖片,效果如下:
上述結果的呈現只是透過字元來模擬圖片。其實我們可以藉助第三方函式庫實現更完美的圖片呈現。接下來我們介紹如何透過matplotlib函式庫來呈現圖片。這個庫非常有用,後續還會接觸到這個庫。
我們實作一個
def show_image(data, index): fig, ax = plt.subplots(nrows=1, ncols=1, sharex=True, sharey=True, ) img = data[0].reshape(28, 28) ax.imshow(img, cmap='Greys', interpolation='nearest') ax.set_xticks([]) ax.set_yticks([]) plt.tight_layout() plt.show()
此時可以看到
#實作上述功能的時候可能會缺少一些第三方函式庫,例如matplotlib等。此時需要我們手動進行安裝,具體方法如下:
pip install matplotlib -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
基於TensorFlow的資料解析
MNIST是如此出名,以至於TensorFlow已經對其進行了支援。因此,我們可以透過TensorFlow對其進行載入和解析。下面我們給出用TensorFlow實作的程式碼。
# -*- coding: utf-8 -*- from tensorflow.examples.tutorials.mnist import input_data import pylab def show_mnist(): # 通过TensorFlow库解析数据 mnist = input_data.read_data_sets("../data", one_hot=True) im = mnist.train.images[0] im = im.reshape(28 ,28) # 进行绘图 pylab.imshow(im, cmap='Greys', interpolation='nearest') pylab.show() if __name__ == "__main__": show_mnist()
該程式碼實現的最終效果與上一個實例一致,這裡不再贅述。
以上是想學習人工智慧,這個的資料集必須掌握,MNIST入門與實戰的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本站6月27日訊息,剪映是由位元組跳動旗下臉萌科技開發的一款影片剪輯軟體,依託於抖音平台且基本面向該平台用戶製作短影片內容,並相容於iOS、安卓、Windows 、MacOS等作業系統。剪映官方宣布會員體系升級,推出全新SVIP,包含多種AI黑科技,例如智慧翻譯、智慧劃重點、智慧包裝、數位人合成等。價格方面,剪映SVIP月費79元,年費599元(本站註:折合每月49.9元),連續包月則為59元每月,連續包年為499元每年(折合每月41.6元) 。此外,剪映官方也表示,為提升用戶體驗,向已訂閱了原版VIP

透過將檢索增強生成和語意記憶納入AI編碼助手,提升開發人員的生產力、效率和準確性。譯自EnhancingAICodingAssistantswithContextUsingRAGandSEM-RAG,作者JanakiramMSV。雖然基本AI程式設計助理自然有幫助,但由於依賴對軟體語言和編寫軟體最常見模式的整體理解,因此常常無法提供最相關和正確的程式碼建議。這些編碼助手產生的代碼適合解決他們負責解決的問題,但通常不符合各個團隊的編碼標準、慣例和風格。這通常會導致需要修改或完善其建議,以便將程式碼接受到應

想了解更多AIGC的內容,請造訪:51CTOAI.x社群https://www.51cto.com/aigc/譯者|晶顏審校|重樓不同於網路上隨處可見的傳統問題庫,這些問題需要跳脫常規思維。大語言模型(LLM)在數據科學、生成式人工智慧(GenAI)和人工智慧領域越來越重要。這些複雜的演算法提升了人類的技能,並在許多產業中推動了效率和創新性的提升,成為企業保持競爭力的關鍵。 LLM的應用範圍非常廣泛,它可以用於自然語言處理、文字生成、語音辨識和推薦系統等領域。透過學習大量的數據,LLM能夠產生文本

大型語言模型(LLM)是在龐大的文字資料庫上訓練的,在那裡它們獲得了大量的實際知識。這些知識嵌入到它們的參數中,然後可以在需要時使用。這些模型的知識在訓練結束時被「具體化」。在預訓練結束時,模型實際上停止學習。對模型進行對齊或進行指令調優,讓模型學習如何充分利用這些知識,以及如何更自然地回應使用者的問題。但是有時模型知識是不夠的,儘管模型可以透過RAG存取外部內容,但透過微調使用模型適應新的領域被認為是有益的。這種微調是使用人工標註者或其他llm創建的輸入進行的,模型會遇到額外的實際知識並將其整合

機器學習是人工智慧的重要分支,它賦予電腦從數據中學習的能力,並能夠在無需明確編程的情況下改進自身能力。機器學習在各個領域都有廣泛的應用,從影像辨識和自然語言處理到推薦系統和詐欺偵測,它正在改變我們的生活方式。機器學習領域存在著多種不同的方法和理論,其中最具影響力的五種方法被稱為「機器學習五大派」。這五大派分別為符號派、聯結派、進化派、貝葉斯派和類推學派。 1.符號學派符號學(Symbolism),又稱符號主義,強調利用符號進行邏輯推理和表達知識。該學派認為學習是一種逆向演繹的過程,透過現有的

編輯|ScienceAI問答(QA)資料集在推動自然語言處理(NLP)研究中發揮著至關重要的作用。高品質QA資料集不僅可以用於微調模型,也可以有效評估大語言模型(LLM)的能力,尤其是針對科學知識的理解和推理能力。儘管目前已有許多科學QA數據集,涵蓋了醫學、化學、生物等領域,但這些數據集仍有一些不足之處。其一,資料形式較為單一,大多數為多項選擇題(multiple-choicequestions),它們易於進行評估,但限制了模型的答案選擇範圍,無法充分測試模型的科學問題解答能力。相比之下,開放式問答

編輯|KX在藥物研發領域,準確有效地預測蛋白質與配體的結合親和力對於藥物篩選和優化至關重要。然而,目前的研究並沒有考慮到分子表面訊息在蛋白質-配體相互作用中的重要作用。基於此,來自廈門大學的研究人員提出了一種新穎的多模態特徵提取(MFE)框架,該框架首次結合了蛋白質表面、3D結構和序列的信息,並使用交叉注意機制進行不同模態之間的特徵對齊。實驗結果表明,該方法在預測蛋白質-配體結合親和力方面取得了最先進的性能。此外,消融研究證明了該框架內蛋白質表面資訊和多模態特徵對齊的有效性和必要性。相關研究以「S

本站8月1日消息,SK海力士今天(8月1日)發布博文,宣布將出席8月6日至8日,在美國加州聖克拉拉舉行的全球半導體記憶體峰會FMS2024,展示諸多新一代產品。未來記憶體和儲存高峰會(FutureMemoryandStorage)簡介前身是主要面向NAND供應商的快閃記憶體高峰會(FlashMemorySummit),在人工智慧技術日益受到關注的背景下,今年重新命名為未來記憶體和儲存高峰會(FutureMemoryandStorage),以邀請DRAM和儲存供應商等更多參與者。新產品SK海力士去年在
