【发布时间】:2021-02-24 06:13:03
【问题描述】:
我正在使用 Tensorflow v2.4.1 来尝试训练 CNN。这是我的训练的(简化)版本:
train_datagen = ImageDataGenerator(
rescale=1./255,
zca_epsilon=1e-06,
rotation_range=20,
width_shift_range=.2,
height_shift_range=.2,
shear_range=0.2,
zoom_range=.2,
fill_mode='nearest',
cval=0., # value used for fill_mode = "constant")
train_generator = train_datagen.flow_from_directory(
data_dir + '/train',
target_size=(256,256),
batch_size=64,
class_mode='categorical'
)
model.fit(train_generator)
现在,我正在尝试编写一些代码,这些代码将在类似结构的图像目录上逐一测试模型。我这样做是这样的:
class_list = ['a','b','c','d']
count_total = 0
count_right = 0
for c in class_list:
test_dir = data_dir + '/test/', + c + '/'
for imagepath in os.listdir(test_dir):
image = cv2.imread(test_dir+imagepath)
image_from_array = Image.fromarray(image, "RGB")
size_image = image_from_array.resize((256,256))
p = np.expand_dims(size_image, 0)
img = tf.cast(p, tf.float32)/255
pred = class_list[np.argmax(model.predict(img))]
count_total += 1
if pred == c:
count_right += 1
acc = count_right/count_total
我的准确率 (acc) 将达到 0.20。但是,我认为这是代码的问题,而不是正确的准确性,因为如果我运行以下代码:
test_datagen = ImageDataGenerator(rescale=1./255)
test_generator = test_datagen.flow_from_directory(
data_dir + '/test',
target_size=(256,256),
batch_size=64,
class_mode='categorical'
)
model.evaluate(test_generator)
然后model.evaluate() 报告精度为 0.53
那么,逐一预测图像的代码有什么问题?
【问题讨论】:
标签: python tensorflow conv-neural-network prediction