我想在VGG16上训练MNIST。
MNIST图像大小为28 * 28,我在keras VGG16中将输入大小设置为32 * 32。当我训练时,我得到了很好的指标,但我不确定究竟发生了什么。 keras是用空的空间填充还是图像被线性扩展,就像在缩放功能中一样?任何人都知道如何在60个时代后获得+ 95%的测试精度?
在这里我定义目标大小:
target_size = (32, 32)
这是我定义flow_from_dataframe生成器的地方:
train_df = pd.read_csv("cv1_train.csv", quoting=3)
train_df_generator = train_image_datagen.flow_from_dataframe(
dataframe=train_df,
directory="../../../MNIST",
target_size=target_size,
class_mode='categorical',
batch_size=batch_size,
shuffle=False,
color_mode="rgb",
classes=["zero","one","two","three","four","five","six","seven","eight","nine"]
)
在这里我定义我的输入大小:
model_base = VGG16(weights=None, include_top=False,
input_shape=(32, 32, 3), classes=10)
图像将简单地调整大小到指定的target_size
。这已在documentation中明确说明:
target_size:整数
(height, width)
的元组,默认值:(256, 256)
。找到所有图像的尺寸将调整大小。
您还可以检查源代码并在load_img
函数中找到相关部分。用于调整图像大小的默认插值方法是nearest
。您可以找到有关各种插值方法here(MATLAB)或here(PIL)的更多信息。