【问题标题】:How do I select only a specific digit from the MNIST dataset provided by Keras?如何从 Keras 提供的 MNIST 数据集中仅选择特定数字?
【发布时间】:2018-12-14 13:52:11
【问题描述】:

我目前正在使用 Keras 在 MNIST 数据集上训练前馈神经网络。我正在使用格式加载数据集

(X_train, Y_train), (X_test, Y_test) = mnist.load_data()

但是我只想使用数字 0 和 4 来训练我的模型,而不是全部。如何只选择 2 位数字?我对 python 还很陌生,可以弄清楚如何过滤 mnist 数据集......

【问题讨论】:

    标签: python filter keras deep-learning mnist


    【解决方案1】:

    Y_trainY_test 为您提供图像的标签,您可以将它们与 numpy.where 一起使用以过滤掉带有 0 和 4 的标签子集。你所有的变量都是numpy数组,所以你可以简单地做;

    import numpy as np
    
    train_filter = np.where((Y_train == 0 ) | (Y_train == 4))
    test_filter = np.where((Y_test == 0) | (Y_test == 4))
    

    您可以使用这些过滤器按索引获取数组的子集。

    X_train, Y_train = X_train[train_filter], Y_train[train_filter]
    X_test, Y_test = X_test[test_filter], Y_test[test_filter]
    

    如果您对超过 2 个标签感兴趣,则语法可能会因 where 和 or 而变得复杂。所以你也可以使用numpy.isin来创建蒙版。

    train_mask = np.isin(Y_train, [0, 4])
    test_mask = np.isin(Y_test, [0, 4])
    

    您可以像以前一样使用这些掩码进行布尔索引。

    【讨论】:

      【解决方案2】:

      你有标签文件以及训练和测试:

      train_images = mnist.train_images()
      train_labels = mnist.train_labels()
      
      test_images = mnist.test_images()
      test_labels = mnist.test_labels()
      

      您可以将它们与简单的列表推导一起使用来过滤您的数据集

      zero_four_test = [test_images[key] for (key, label) in enumerate(test_labels) if int(label) == 0 or int(label) == 4]
      

      【讨论】:

        【解决方案3】:

        当数字不连续且以 0 开头时,使用 Y_train = Y_train[train_mask] 会引发 InvalidArgumentError(keras 期望从 0 开始的连续标签范围)

        解决方案(两位数)是:

        train_mask = np.isin(Y_train, [2,8])
        test_mask = np.isin(Y_test, [2,8])
        
        X_train, Y_train = X_train[train_mask], np.array(Y_train[train_mask] == 8)
        X_test, Y_test = X_test[test_mask], np.array(Y_test[test_mask] == 8)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-03-12
          • 1970-01-01
          • 2020-10-15
          • 1970-01-01
          • 1970-01-01
          • 2018-08-11
          • 1970-01-01
          相关资源
          最近更新 更多