如何对MNIST数据集训练集抽样以缩短分类实验运行时间?
解决方案
你可以通过生成随机索引的方式,精准抽取20000条训练样本,同时保证图像和标签的对应关系。以下是修正后的完整代码:
library(keras) mnist <- dataset_mnist() # 提取原始数据集 train_images <- mnist$train$x train_labels <- mnist$train$y test_images <- mnist$test$x test_labels <- mnist$test$y # 生成20000个不重复的随机训练样本索引 sample_indices <- sample(seq_len(nrow(train_images)), size = 20000, replace = FALSE) # 筛选抽样后的训练集图像和标签 sampled_train_images <- train_images[sample_indices, , ] sampled_train_labels <- train_labels[sample_indices]
关键步骤说明
seq_len(nrow(train_images))生成1到60000的索引序列,对应所有训练样本;sample(..., replace = FALSE)确保每个样本只被抽取一次,避免重复;- 由于
train_images是三维数组(样本数×高度×宽度),使用[sample_indices, , ]可以保留图像的28×28像素结构,仅筛选目标样本; - 标签向量
train_labels直接通过索引筛选,保证和抽样后的图像一一对应。
内容的提问来源于stack exchange,提问作者Adam Rowland
相关产品推荐
相关产品推荐

