# mnist資料集
這是乙個手寫數字識別的資料集(影象分類資料集)。包括裁減好的手寫數字和相應的分類標籤。每張上都是乙個手寫的阿拉伯數字,對應的標籤表示這個手寫數字是0到9中的哪乙個。基於這個資料集提出的問題很簡單,也很明確——根據影象識別出數字。
![資料圖例](正文.assets/1550222174414.png)
圖:mnist資料示例
> 除了mnist,這篇**[^1]還有乙個貢獻。比如這張在神經網路科普中已經用爛了的卷積神經網路結構圖:
> ![lenet-5](正文.assets/1549705130999.png)
這個資料集的歷史已經有二十多年。在這個資料集上完成手寫字元分類的問題已經得到了很好的解決。有大把方法可以輕鬆達到百分之九十以上的正確率。而且由於這個資料集提出的問題比較簡單,在這個資料集上起效的方法在其他資料集上不一定起效。所以如果你提出乙個新模型,在這個資料集上能取得百分之**十的正確率,並沒有很強的說服力。我介紹這個資料集一方面因為它比較出名,另一方面把對這個資料集的使用當作torchvision的hello world。
## 檔案和使用說明
配合torchvision使用。資料集檔案隨意放置。只需要把檔案路徑填寫到包含mnist的4個壓縮包的資料夾這一級。
資料集檔案包括:
- t10k-images-idx3-ubyte.gz
- t10k-labels-idx1-ubyte.gz
- train-images-idx3-ubyte.gz
- train-labels-idx1-ubyte.gz
> mnist已經預先完成了測試集和訓練集的分割。在載入的時候可以直接載入訓練集、測試集。也可以考慮把這些資料混合在一起然後重新取樣、分割。
## pytorch**
```python
data_path = './mnist/'
download_dataset = true
# 批量大小
batch_size = 100
# 構造資料轉換器
dataset_transform = torchvision.transforms.totensor()
# 分別讀取訓練集和測試集
train_data = torchvision.datasets.mnist(root=data_path, train=true,download=download_dataset,
transform=torchvision.transforms.totensor())
test_data = torchvision.datasets.mnist(root=data_path, train=false,download=download_dataset,
transform=torchvision.transforms.totensor())
# 分別構造訓練集和測試集的載入器
# 在這一步進行shuffle打亂樣本順序
# 其實載入器每遍歷一次都要隨機重排一次
dataloader = torch.utils.data.dataloader
train_loader = dataloader(dataset=train_data, batch_size=batch_size, shuffle=true)
test_loader = dataloader(dataset=test_data, batch_size=batch_size, shuffle=true)
def viewdataset(datasetloader, index):
for i,data in enumerate(datasetloader):
if i==index:
img, label =data
tempimg = torchvision.utils.make_grid(img, pad_value=0.5, nrow=10)
print('labels:')
print(label.numpy())
print('images:')
# 設定要顯示的內容
plt.imshow(np.transpose(tempimg.numpy(),(1, 2, 0)))
# 執行show函式就顯示
plt.show()
break
viewdataset(train_loader, 20)
viewdataset(test_loader, 20)
## 資料預處理
其中給出了已經計算好的mnist的trainset的$\mu$和$\sigma$。
## 相關**
怎麼改mnist資料的標籤 MNIST資料集
mnist資料集 這是乙個手寫數字識別的資料集 影象分類資料集 包括裁減好的手寫數字和相應的分類標籤。每張上都是乙個手寫的阿拉伯數字,對應的標籤表示這個手寫數字是0到9中的哪乙個。基於這個資料集提出的問題很簡單,也很明確 根據影象識別出數字。資料圖例 正文.assets 1550222174414....
資料庫值錯誤怎麼改?
表名字輸錯了怎麼改?rename table 原名 to 新名字 eg rename table tablr to table 刪除表名 drop table 表名字 增加一列 alter table 表名字 add 列名字 資料型別 約束 eg alter table employee add t...
犀牛怎麼改語言 R語言 資料讀取
r語言確實是工作中的好幫手,資料處理 分析 視覺化,第一想到的就是,r語言能不能解決,有沒有r 來解決這個問題?然後去找答案。而且和其他計算機語言來說也容易學習,想當年考計算機等級,c語言學的一竅不通,r語言卻還是ok很多。但是,作為非專業者,我也很難達到r 信手捏來的熟練程度,那怎麼辦呢?掌握了一...