【问题标题】:Resize MNIST images before training using Keras在使用 Keras 进行训练之前调整 MNIST 图像的大小
【发布时间】:2018-11-12 18:54:45
【问题描述】:

我一直在从事一个涉及 CNN 及其权重的项目,并且我一直在尝试减少 CNN 中存在的权重数量。我想在训练 CNN 之前将 MNIST 图像的大小从 28x28 调整为 14x14,但我不知道如何在 Keras 中做到这一点。

以下是用于导入 MNIST 数据集和构建 CNN 的代码示例:

# LOAD MNIST DATA
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# RESHAPE TO [SAMPLES][PIXELS][WIDTH][HEIGHT]
X_train = X_train.reshape(X_train.shape[0], 1, 28, 28).astype('float32')
X_test = X_test.reshape(X_test.shape[0], 1, 28, 28).astype('float32')

# NORMALIZE 0-255 TO 0-1
X_train = X_train / 255
X_test = X_test / 255
# ONE HOT ENCODE
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
num_classes = y_test.shape[1]

#DEFINE MODEL
def larger_model():
  # CREATE MODEL
  model = Sequential()
  model.add(Conv2D(2, (5, 5), input_shape=(1, 28, 28), activation='relu', 
padding="same"))
  model.add(MaxPooling2D(pool_size=(2, 2)))
  model.add(Conv2D(2, (5, 5), activation='relu', padding="same"))
  model.add(MaxPooling2D(pool_size=(2, 2)))
  model.add(Dropout(0.2))
  model.add(Flatten())
  model.add(Dense(16, activation='relu'))
  model.add(Dense(num_classes, activation='softmax'))
  # COMPILE MODEL
  model.compile(loss='categorical_crossentropy', optimizer='adam', metrics= 
 ['accuracy'])
  return model

# BUILD MODEL
model = larger_model()
model.summary()

X_train 变量是模型训练中使用的变量。在训练开始之前,我应该进行哪些调整以将 X_train 的大小减小到 14x14?

谢谢!

【问题讨论】:

    标签: python machine-learning keras convolutional-neural-network


    【解决方案1】:

    默认的load_data 函数没有任何动态修改选项,例如调整大小。由于您现在拥有 NumPy 数组,因此您必须对图像进行预处理,将其大小调整为数组。这是一个post,关于将 NumPy 数组大小调整为图像。

    【讨论】:

    • 谢谢!我在这篇文章中找到了答案。虽然,opencv 解决方案对我不起作用,因为它在处理大批量图像(如 MNIST 训练图像)时会产生错误。 scikit-image 解决方案完美地为我工作。
    猜你喜欢
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 2013-10-03
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    相关资源
    最近更新 更多