[英]MNIST dataset missing classes
我正在使用 Keras 和 Theano 訓練一個 ConvNet,但在此之前我決定先看一看數據集、它的數據樣本和類......而且我不喜歡我所看到的。
我正在使用以下代碼加載訓練數據集和測試數據集,並計算為每個數據集標記了多少數據樣本:
import numpy as np
from keras.datasets import mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()
train_classes = [0,0,0,0,0,0,0,0,0,0]
test_classes = [0,0,0,0,0,0,0,0,0,0]
for i in y_train:
train_classes[y_train[i]] = train_classes[y_train[i]] + 1
for i in y_test:
test_classes[y_test[i]] = test_classes[y_test[i]] + 1
print('Training classes: ', train_classes)
print('\nTesting classes: ', test_classes)
......結果令人擔憂:
(ann) C:\Users\shado\mnist>python statistics.py
Using Theano backend.
Training classes: [6742, 17900, 5421, 6265, 11907, 5923, 0, 0, 0, 5842]
Testing classes: [1010, 1924, 1135, 0, 1940, 974, 0, 980, 0, 2037]
因此,從標簽計數中可以看出,訓練數據集缺少“6”、“7”和“8”類,而測試數據集缺少“3”、“6”和“8”類。 當然,類分布無處不在,特別是在訓練數據集上。
我是否下載了錯誤的數據集? 我在這里錯過了什么嗎?
你需要的邏輯是:
for i in y_train:
train_classes[i] += 1
因為i
已經是標簽了。
或等效地:
for i in range(len(y_train)):
train_classes[y_train[i]] += 1
您當前的代碼基本上是隨機抽樣每組的前 10 個標簽......
注意:您也可以簡單地使用: np.unique(y_train, return_counts=True)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.