图像分类算法需要多长时间?

我编写了以下代码用于识别图像。

# Importing the Keras libraries and packagesfrom keras.models import Sequentialfrom keras.layers import Conv2Dfrom keras.layers import MaxPooling2Dfrom keras.layers import Flattenfrom keras.layers import Dense# Initialising the CNNclassifier = Sequential()# Step 1 - Convolutionclassifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))# Step 2 - Poolingclassifier.add(MaxPooling2D(pool_size = (2, 2)))# Adding a second convolutional layerclassifier.add(Conv2D(32, (3, 3), activation = 'relu'))classifier.add(MaxPooling2D(pool_size = (2, 2)))# Step 3 - Flatteningclassifier.add(Flatten())# Step 4 - Full connectionclassifier.add(Dense(units = 128, activation = 'relu'))classifier.add(Dense(units = 1, activation = 'sigmoid'))# Compiling the CNNclassifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])# Part 2 - Fitting the CNN to the imagesfrom keras.preprocessing.image import ImageDataGeneratortrain_datagen = ImageDataGenerator(rescale = 1./255,shear_range = 0.2,zoom_range = 0.2,horizontal_flip = True)test_datagen = ImageDataGenerator(rescale = 1./255)training_set = train_datagen.flow_from_directory('E:\\ML_R&D\\training_set\\cats1',target_size = (64, 64),batch_size = 32,class_mode = 'binary')test_set = test_datagen.flow_from_directory('E:\\ML_R&D\\test_set\\cats1',target_size = (64, 64),batch_size = 32,class_mode = 'binary')classifier.fit_generator(training_set,steps_per_epoch = 8000,epochs = 25,validation_data = test_set,validation_steps = 2000)# Part 3 - Making new predictionsimport numpy as npfrom keras.preprocessing import imagetest_image = image.load_img('E:\\ML_R&D\\cat.jpg', target_size = (64, 64))test_image = image.img_to_array(test_image)test_image = np.expand_dims(test_image, axis = 0)result = classifier.predict(test_image)training_set.class_indicesif result[0][0] == 1:    prediction = 'dog'else:    prediction = 'cat'

当我运行这段代码时,它可以成功运行而没有任何错误,但等待了几个小时(2小时)后没有任何结果显示。屏幕上只显示以下内容:

Found 0 images belonging to 0 classes.Found 0 images belonging to 0 classes.Epoch 1/25


回答:

问题出在你提供的目录结构上。

training_set = train_datagen.flow_from_directory('E:\\ML_R&D\\training_set\\cats1',target_size = (64, 64),batch_size = 32,class_mode = 'binary')

这里的路径 E:\\ML_R&D\\training_set\\cats1 必须包含子文件夹(代表每个类别),每个子文件夹内应包含属于该类别的图像。

例如

/home/tlokeshkumar/Documents/image_data 是我的数据集所在的位置。

image_data    class_1        class_1_1.jpg        class_1_2.jpg        ...    class_2        class_2_1.jpg        class_2_2.jpg        class_2_3.jpg        ...    class_3    class_4    ...

如果遵循这种结构,你必须输入主文件夹的路径(image_data)。

training_set = train_datagen.flow_from_directory('home/tlokeshkumar/Documents/image_data',target_size = (64, 64),batch_size = 32,class_mode = 'binary')

对于快速图像分类,你可以查看我的代码库,其中我使用了Keras编写了一个图像分类器,该分类器使用瓶颈特征来训练,比正常的训练过程快得多。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注