Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python CNN图像分类:它总是给我同样的预测_Python_Tensorflow_Neural Network_Jupyter Notebook_Conv Neural Network - Fatal编程技术网

Python CNN图像分类:它总是给我同样的预测

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_

我是这个领域的新手,还在学习,如果这被认为是愚蠢的问题,我很抱歉。 所以最近我尝试使用Python和TensorFlow学习图像分类。我看了一些视频教程。但是我的代码中有一些问题,因为当我尝试我的模型时,验证损失往往会增加,而我的验证精度却一直在波动。当我试图预测我的样本图像时,它总是给我同样的预测。我的数据集中的图像总共有730个

下面是我的预测代码:

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]
try
print(类别[np.argmax(预测[0]))
它将为您提供cat@AkashKarnatak您最近对print(CATEGORIES[np.argmax(prediction[0]))的建议帮助我解决了问题。现在它给了我正确的值。非常感谢你的帮助。我真的很感谢你的帮助。同时也感谢PraktikKumar的帮助。我现在感到放心了。