缺少 MNIST 数据集 类
MNIST dataset missing classes
我正在使用 Keras 和 Theano 训练一个 ConvNet,但在这之前我决定先看看数据集、它的数据样本和 classes...我不喜欢什么我看到了。
我正在使用以下代码加载训练和测试数据集,并计算每个数据样本标记的数据样本数量:
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”class,而测试数据集缺少“3”, “6”和“8”classes。当然,class 分布无处不在,特别是在训练数据集上。
我是不是下载错了数据集?我在这里遗漏了什么吗?
你需要的逻辑是:
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)
.
我正在使用 Keras 和 Theano 训练一个 ConvNet,但在这之前我决定先看看数据集、它的数据样本和 classes...我不喜欢什么我看到了。
我正在使用以下代码加载训练和测试数据集,并计算每个数据样本标记的数据样本数量:
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”class,而测试数据集缺少“3”, “6”和“8”classes。当然,class 分布无处不在,特别是在训练数据集上。
我是不是下载错了数据集?我在这里遗漏了什么吗?
你需要的逻辑是:
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)
.