Python CNN图像分类:它总是给我同样的预测
我是这个领域的新手,还在学习,如果这被认为是愚蠢的问题,我很抱歉。 所以最近我尝试使用Python和TensorFlow学习图像分类。我看了一些视频教程。但是我的代码中有一些问题,因为当我尝试我的模型时,验证损失往往会增加,而我的验证精度却一直在波动。当我试图预测我的样本图像时,它总是给我同样的预测。我的数据集中的图像总共有730个 下面是我的预测代码:Python CNN图像分类:它总是给我同样的预测,python,tensorflow,neural-network,jupyter-notebook,conv-neural-network,Python,Tensorflow,Neural Network,Jupyter Notebook,Conv Neural Network,我是这个领域的新手,还在学习,如果这被认为是愚蠢的问题,我很抱歉。 所以最近我尝试使用Python和TensorFlow学习图像分类。我看了一些视频教程。但是我的代码中有一些问题,因为当我尝试我的模型时,验证损失往往会增加,而我的验证精度却一直在波动。当我试图预测我的样本图像时,它总是给我同样的预测。我的数据集中的图像总共有730个 下面是我的预测代码: import cv2 import tensorflow as tf CATEGORIES = ["Bike", "Car"] IMAGE_
import cv2
import tensorflow as tf
CATEGORIES = ["Bike", "Car"]
IMAGE_SIZE = 50
def prepare(filepath):
image_array = cv2.imread(filepath, cv2.IMREAD_GRAYSCALE)
image_array = image_array/255.0
new_image_array = cv2.resize(image_array, (IMAGE_SIZE,IMAGE_SIZE))
return new_image_array.reshape(-1, IMAGE_SIZE, IMAGE_SIZE, 1)
model = tf.keras.models.load_model("prototype.model")
prediction = model.predict([prepare('car.jpg')])
print( CATEGORIES[int(prediction[0][0])] )
非常感谢。我曾经遇到过类似的问题。由于您需要将图像分类为“自行车”或“汽车”,请尝试将最终输出层更改为
model.add(Dense(2))
model.add(Activation('softmax'))
如果仍然不起作用,请尝试
sparse\u categorical\u crossentropy
,因为您的loss
只运行了3个时代,还是仅仅为了这个问题?嗨,谢谢您的时间。是的,我只运行了3个时代。我不知道这是否会影响我的产出。当我尝试运行它10个时代时,它具有相同的模式,在每3个时代之后,我的验证损失趋于增加,而我的验证准确性则相反。我训练过的模型总共有730张图像。我不确定您的图像的复杂性,而且图像的数量似乎也很低,特别是如果变化很大,如果可能,请添加到数据集的链接。此外,如果它们很复杂,2个conv层可能不够。如果合适的话,问题很可能是超参数。此外,在填写数据arr时,不要将pass
与一起使用,除非
,至少记录/打印您的例外情况我的数据集由汽车图像和自行车图像组成。这里是我的数据集的链接:我尝试使用4个conv层,但它始终提供相同的输出。我应该替换通行证吗?这个代码几乎相同,我想它应该可以帮助您解决这个问题:您好,谢谢您的时间。我现在正在使用你的建议,验证损失和验证准确率都在良好的方向上。验证损失越来越小,验证精度越来越高,不再波动。但是我的预测总是给我相同的输出,不管输入的图像是什么。你的预测,准确度和有效性是多少accuracy@bodrov,您是否可以尝试使用np.argmax(预测[0],轴=-1)
代替prediction[0][0]
tryprint(类别[np.argmax(预测[0]))
它将为您提供cat@AkashKarnatak您最近对print(CATEGORIES[np.argmax(prediction[0]))的建议帮助我解决了问题。现在它给了我正确的值。非常感谢你的帮助。我真的很感谢你的帮助。同时也感谢PraktikKumar的帮助。我现在感到放心了。