簡體   English   中英

如何創建 Cifar-10 子集?

[英]How to create Cifar-10 subset?

我想用更少的訓練數據樣本來訓練一個深度神經網絡,以減少測試我的代碼的時間。 我想知道如何使用 Keras TensorFlow 對 Cifar-10 數據集進行子集化。我有以下代碼,用於訓練 Cifar-10 完整數據集。

#load and prepare data
if WhichDataSet == 'CIFAR10':
    (x_train, y_train), (x_test, y_test) = tensorflow.keras.datasets.cifar10.load_data()
else:
    (x_train, y_train), (x_test, y_test) = tensorflow.keras.datasets.cifar100.load_data()
num_classes = np.unique(y_train).shape[0]
K_train = x_train.shape[0]
input_shape = x_train.shape[1:]
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
y_train = tensorflow.keras.utils.to_categorical(y_train, num_classes)
y_test = tensorflow.keras.utils.to_categorical(y_test, num_classes)

使用 pandas 模塊創建數據幀並相應地對其進行采樣。

import pandas as pd
(train_images1, train_labels), (test_images1, test_labels) = datasets.cifar10.load_data()

# Normalize pixel values to be between 0 and 1
train_images, test_images = train_images1 / 255.0, test_images1 / 255.0

#creating the validation set from the training set
df = pd.DataFrame(list(zip(train_images, train_labels)), columns =['Image', 'label']) 
val = df.sample(frac=0.2)
X_train = np.array([ i for i in list(val['Image'])])
y_train = np.array([ [i[0]] for i in list(val['label'])])

val = df.sample(frac=0.2)從總數據的 0.20% 中采樣。

如果您想要特定數量的數據記錄,您可以使用val = df.sample(n=5000) ,方法是相應地設置n值。

如果您希望每次運行代碼時都獲得相同的結果,則可以使用random_state = 0 例如:

val = df.sample(n=5000,random_state = 0)

根據標簽創建子集

創建不包括少數標簽的數據集子集。 例如,要創建一個只有前五個 class 標簽的新火車數據集,您可以使用以下代碼

subset_x_train = x_train[np.isin(y_train, [0,1,2,3,4]).flatten()]
subset_y_train = y_train[np.isin(y_train, [0,1,2,3,4]).flatten()]

不考慮標簽創建子集

要創建 10% 的訓練數據子集,您可以使用以下代碼

# Shuffle first (optional)
idx = np.arange(len(x_train))
np.random.shuffle(idx)

# get first 10% of data
subset_x_train = x_train[:int(.10*len(idx))]
subset_y_train = y_train[:int(.10*len(idx))]

x_testy_test重復相同的操作以獲取測試數據的子集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM