【发布时间】:2021-08-04 19:59:14
【问题描述】:
我正在使用预训练的 VGG19 来训练模型。在训练时,我获得了大约 92% 的准确率(训练和验证)。
vgg19 = VGG19(input_shape=IMAGE_SIZE, weights='imagenet', include_top=False)
for layer in vgg19.layers:
layer.trainable = False
x = Flatten()(vgg19.output)
prediction = Dense(len(folders), activation='softmax')(x)
model = Model(inputs=vgg19.input, outputs=prediction)
model.compile(loss='categorical_crossentropy',
optimizer=tf.keras.optimizers.Adam(
learning_rate=0.0005,
name="Adam"),
metrics=['accuracy']
)
r = model.fit_generator(
training_set,
validation_data=test_set,
epochs=20,
steps_per_epoch=len(training_set),
validation_steps=len(test_set)
)
predictions = model.predict(test_set, steps = test_set.n // 31, verbose=1)
y_pred = []
for i in predictions:
y_pred.append(int(np.argmax(i)))
y_pred = np.asarray(y_pred)
但是,在进行预测时,我得到的准确率仅为 52.33%。
有人可以告诉我我在这里做错了什么吗? 谢谢!
【问题讨论】:
-
我认为你有一个过度拟合的问题。您可以使用多种方法来防止过度拟合数据。使用正则化或 dropout 此外,您可以减少神经元或层数。此外,提前停止可能是个好主意
-
嘿,验证准确率和损失都很好。我说的是我通过 model.predict() 获得的准确性。为什么只有52%?另一方面,验证准确率约为 90%,这对我来说似乎不是一个过度拟合的问题。如果我错了,请纠正我。
-
你标准化你的测试数据了吗?
-
是的,它已标准化。
-
这是一个有用的链接:stackoverflow.com/questions/48718663/…
标签: python keras deep-learning