【发布时间】:2019-04-23 20:51:17
【问题描述】:
我将 Keras 用于我的 CNN 模型。在该模型中,我正在使用图像对其进行训练。我的图像形状为 256*256。但是我将其训练为 64*64。当我将图像大小调整为 64*64 并再次训练时,我的准确率急剧下降。我错过了什么?
当我将 Convolution2D 输入形状排列为
classifier.add(Convolution2D(32,3,3,input_shape = (256,256), activation ='relu'))
这需要很多时间。因此,我将 Convolution2D 设置为 classifier.add(Convolution2D(32,3,3,input_shape = (64,64), activation ='relu')),并训练了我的第一个模型。它预测得很好。
当我将输入图像的形状调整为 64*64 并使用 Convolution2D 进行训练时
classifier.add(Convolution2D(32,3,3,input_shape = (64,64)
我的准确率降低了。有什么问题?
这里是代码
classifier = Sequential()
classifier.add(Convolution2D(32,3,3,input_shape = (64,64,3), activation ='relu'))
classifier.add(MaxPooling2D(pool_size=(2,2)))
classifier.add(Flatten())
classifier.fit_generator(
training_set,
steps_per_epoch=8000,
epochs=10,
validation_data=test_set,
validation_steps=800)
这是我的重塑代码
from PIL import Image
import os
path = 'TestForTrain2'
for file in os.listdir('TestForTrain2'):
img = Image.open(os.path.join('TestForTrain2', file))
width, height = img.size
stringName = str(file)
print(width," === ",height)
print(stringName)
f, e = os.path.splitext(path + file)
imResize = img.resize((64, 64), Image.ANTIALIAS)
imResize.save( stringName + '.jpg', 'JPEG', quality=90)
【问题讨论】:
-
请说明您如何调整图像大小?你用什么来打开它们? opencv,枕头?在这种情况下,它是 opencv 不要忘记它使用 BGR 颜色格式,而不是 RGB 格式。
-
我很困惑。您的 2 个培训过程有什么区别?
-
不同之处仅在于输入图像的形状。在我的第一个模型中,输入图像的形状是 256*256。而且这个模型效果很好。在我的第二个模型中,我将输入图像重塑为 64*64,模型的准确率非常低。我不明白为什么会这样。
-
@constt 我添加了重塑代码。而且我还有一个问题,当我将 256*256 形状的输入图像训练为 64*64 输入形状时会发生什么?会影响训练还是CNN会做出一些安排?
-
@GhostDede,您要预测的目标变量是什么?从您发布的顺序模型定义来看,您解决的问题不是很清楚。您是否学习图像嵌入或其他东西?我认为如果您将整个代码发布在这里会很有帮助。
标签: python machine-learning keras