![](/img/trans.png)
[英]Why is numpy.nextafter(0., 1.) != numpy.finfo(float).tiny?
[英]why my model is giving same result even after >93 accuracy ? result >> array([[1., 0., 0.]], dtype=float32)
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
training_set = train_datagen.flow_from_directory('images',
target_size = (64, 64),
batch_size = 32,
class_mode = 'categorical')
#Found 27659 images belonging to 3 classes.
classifier = Sequential()
# Step 1 - Convolution
classifier.add(Convolution2D(32, kernel_size=(3,3), strides=(1,1), input_shape = (64, 64, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Convolution2D(64, (3,3), 2, activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Flatten())
classifier.add(Dense(128, activation = 'relu'))
classifier.add(Dense(3, activation = 'softmax'))
classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
classifier.fit_generator(training_set,
steps_per_epoch = 50,
epochs = 30)
test=image.load_img("./image.png",target_size=(64,64))
test=image.img_to_array(test)
import numpy as np
test=np.expand_dims(test,axis=0)
result=classifier.predict(test)
result
# result is always same as below
#array([[1., 0., 0.]], dtype=float32)
**为什么我总是得到相同的答案,我增加了时代但仍然相同,为什么它真的发生了,对于我已经完成的 2 个课程,但对于 3 个或更多课程它不起作用,或者你可以给我另一个超过 3 个类的代码来预测然后另一个问题是如何根据我们的目录设置标签,例如
images---
-----cat folder
-----dog folder
-----fish folder
但在标签中它会像 [0,0,...,222] 我怎么知道 0 是猫还是狗? **
我刚刚用两个类(猫和狗)尝试了你的代码,我已经修改了你的代码以在二进制模式下工作,特别是最后一个密集层,softmax 到 sigmoid 和损失函数使其工作。 但是我可以看到您可以通过以下改进来做到这一点 1. 增加图像的分辨率 2. 增加网络大小(宽度和高度) 3. 添加验证数据以检查模型性能。 依靠验证准确性而不是训练准确性总是好的。 如果验证准确性良好,则意味着您的模型可能在测试数据集上表现良好。
在这种情况下,我真的认为您不需要关心标签,因为您可能在相应的文件夹中有数据,而 ImageDataGenerator 会解析该文件夹结构并自动生成标签。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.