首页 > 解决方案 > 我们应该有什么作为 model.evaluate 的输出

问题描述

我不久前开始使用 tensorflow,目前正在研究 CNN,尤其是手语 mnist 以识别手语。创建并运行我的模型后,我使用 model.evaluate 和 7172 个图像对其进行评估。问题是在评估器的输出中我有 7172/1,在我看来应该是 7172/7172。此外,我认为我的冗长冗长。我尝试更改模型中的几个设置,但没有任何效果。有人可以帮助我更好地理解这个问题吗?

1.这是我的代码的一部分

training_images = np.expand_dims(training_images, axis = 3)
testing_images = np.expand_dims(testing_images, axis = 3)
train_datagen = ImageDataGenerator(rescale = 1./255,
                               horizontal_flip = True,
                               rotation_range = 40,
                               width_shift_range=0.2,
                               height_shift_range=0.2,
                               shear_range = 0.2,
                               fill_mode ='nearest',
                               zoom_range = 0.2)
validation_datagen = ImageDataGenerator(rescale = 1./255)
model = tf.keras.models.Sequential([tf.keras.layers.Conv2D(64, (3,3), activation='relu', 
                                                                input_shape=(28,28,1)),
                               tf.keras.layers.MaxPooling2D(2,2),
                               tf.keras.layers.Conv2D(64,(3,3),activation = 'relu'),
                               tf.keras.layers.MaxPooling2D(2,2),
                               tf.keras.layers.Flatten(),
                               tf.keras.layers.Dense(128, activation = tf.nn.relu),
                               tf.keras.layers.Dense(26,activation = tf.nn.softmax)])
model.compile(optimizer=tf.optimizers.Adam(),loss = 'sparse_categorical_crossentropy', 
                                             metrics =['accuracy'])
history = model.fit_generator(train_datagen.flow(training_images, training_labels, 
                                                                   batch_size = 32),
                             steps_per_epoch=len(training_images) / 32, epochs = 15, 
                        validation_data = validation_datagen.flow(testing_images,                                                       
                                                          testing_labels,batch_size = 32),
                        validation_steps=len(testing_images) / 32)
model.evaluate(testing_images, testing_labels)

2.这里是我得到的出口

7172/1[=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================] - 2s 218us/sample - loss: 277.3631 - accuracy: 0.4357

标签: tensorflow

解决方案


我在 Google colab 中使用 sign mnist 数据集复制了相同的代码,发现需要替换此代码段:

#training_images = np.expand_dims(training_images, axis = 3)
#testing_images = np.expand_dims(testing_images, axis = 3)

使用下面给出的代码片段成功执行程序。

training_images = training_images.reshape(training_images.shape[0], *(28, 28, 1))
testing_images = testing_images.reshape(testing_images.shape[0], *(28, 28, 1))

运行代码后:

model.evaluate(testing_images, testing_labels)   #model ran on 5 epochs

输出:

172/172 [==============================] - 4s 24ms/step - loss: 189.1395 - accuracy: 0.4999
[189.13946533203125, 0.4999089539051056]

model.evaluate()- 返回模型的损失值和指标值。

请参阅此链接以获取更多详细信息.evaluate()


推荐阅读