我正在研究手写数字识别问题,使用 OpenCV 进行预处理,使用 Keras/Tensorflow 进行推理。我在 MNIST 手写数字数据集上训练了一个模型,其中每张图像都是 28x28 像素。现在我正在使用一组新的数字,我计划使用原始模型架构进行进一步的训练,并通过权重初始化进行迁移学习。
所以这是我的问题:当我缩小到 28x28 像素时,我遇到了丢失某些功能的问题。这是一个例子
这意味着是一个 2,顶部循环中的微小间隙对于帮助将其与 9 或 8 区分开来很重要。但是我的预处理版本失去了间隙,所以循环看起来是封闭的。
我已经发布了另一个关于如何在不丢失功能的情况下缩小尺寸的问题。另一方面,也许我想缩小到更大的尺寸,比如 56x56 像素,这样我就不太可能失去这些功能。我如何进行设置以使这个新尺寸与模型融为一体,而不会使预先训练的权重变得无用?
这是预训练模型的定义:
def define_model(learning_rate, momentum):
model = Sequential()
model.add(Conv2D(32, (3,3), activation = 'relu', kernel_initializer = 'he_uniform', input_shape=(28,28,1)))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(64, (3,3), activation = 'relu', kernel_initializer = 'he_uniform'))
model.add(Conv2D(64, (3,3), activation = 'relu', kernel_initializer = 'he_uniform'))
model.add(MaxPooling2D((2,2)))
model.add(Flatten())
model.add(Dense(100, activation='relu', kernel_initializer='he_uniform'))
model.add(Dense(10, activation='softmax'))
opt = SGD(lr=learning_rate, momentum=momentum)
model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])
return model
这是我的一个想法:在第一层之后增加最大池内核的大小,以使该层的输出具有与我使用 28x28 像素图像相同的形状。(但这不会导致我失去该功能吗?)
温温酱
鸿蒙传说
相关分类