我想将mnist数据集加载到mobilenet V1 CNN于是,我遇到了这个问题
ValueError: Error when checking input: expected input_1 to have shape (32, 32, 3) but got array with shape (28, 28, 1)
下面是我的代码
image_data, label_data = data['image'], data['label']
idx_list = {}
for i in range(10):
idx_list[i] = np.where(label_data == i) # return tuple dtype (rows indices, column indices)
selected_test_sample_indices = {}
for label in range(10):
selected_test_sample_indices[label] = random.sample(set(idx_list[label][0]), int(len(idx_list[label][0]) * 0.2))
selected_train_sample_indicies = {}
for label in range(10):
selected_train_sample_indicies[label] = list(set(idx_list[label][0])- set(selected_test_sample_indices[label]))
train_data_indicies, test_data_indicies = [],[]
for label, indicies in selected_train_sample_indicies.items():
train_data_indicies = train_data_indicies + indicies # merge 2 list
for label, indicies in selected_test_sample_indices.items():
test_data_indicies = test_data_indicies + indicies
random.shuffle(train_data_indicies)
random.shuffle(test_data_indicies)
y_train_data = np.array([label_data[idx] for idx in train_data_indicies])
X_train_data = np.array([image_data[idx] for idx in train_data_indicies])
y_test_data = np.array([label_data[idx] for idx in test_data_indicies])
X_test_data = np.array([image_data[idx] for idx in test_data_indicies])
number_of_classes = 10
y_train = y_train_data
y_test = y_test_data
X_train = X_train_data.reshape(X_train_data.shape[0], img_rows, img_cols, 1)
X_test = X_test_data.reshape(X_test_data.shape[0], img_rows, img_cols, 1)```
当我试图重塑我得到以下错误
ValueError: cannot reshape array of size 11146912 into shape (14218,32,32,1)
当我将改为(4500,32,32,3)时,总和小于11146912这让我很困惑。请帮我修复这个错误。
MNIST数据集包含灰度图像,大小为28x28像素。这就是为什么每个图像的形状是(28,28,1),每个值在0-255之间。这是另一个同样问题的stackoverflow问题。最有效的答案是将灰度图像转换为rgb图像,然后调整图像的大小。
将灰度图像转换为rgb图像后,图像的形状将从
28 x 28 x 1
到28 x 28 x 3
那么你需要将它的大小调整为32。你可以使用openCV库。
resized_image = cv2.resize(image, (32, 32))
则resized_image
形状为32 x 32 x 3