Keras模型评估显示TypeError:'numpy.float64'对象对于mnist数据集不可迭代

时间:2018-12-02 16:00:26

标签: python tensorflow keras deep-learning google-colaboratory

我刚开始使用keras,我试图在mnist中为keras.datasets数据集建立模型

这是我的初始代码:

import tensorflow as tf

(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()

然后,我定义了一个模型:

model = tf.keras.Sequential()

model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
model.add(tf.keras.layers.Dense(512, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation = tf.nn.softmax))

model.compile(loss = 'sparse_categorical_crossentropy', optimizer='rmsprop')
model.fit(train_images, train_labels, epochs=10)

我使用model.compile(loss = 'sparse_categorical_crossentropy', optimizer='rmsprop')尝试了该模型,并且该模型训练得很好

后来,我试图评估模型:

loss, accuracy = model.evaluate(test_images, test_labels)
print('Accuracy on the test set: '+str(accuracy))

并显示以下 错误

10000/10000 [==============================] - 0s 50us/step
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-68-7ccd830be0cb> in <module>()
----> 1 loss, accuracy = model.evaluate(test_images, test_labels)
      2 print('Accuracy on the test set: '+str(accuracy))

TypeError: 'numpy.float64' object is not iterable

但是,当我尝试使用predictions = model.predict(test_images)对test_images进行预测时,效果很好。

我正在使用Google colab进行编码。 请帮忙!

1 个答案:

答案 0 :(得分:0)

由于缺少model.compile()的指标参数,您的模型没有指标

  

编译

     

compile(优化程序,loss = None, metrics = None, loss_weights = None,   sample_weight_mode = None,weighted_metrics = None,target_tensors = None)

呼叫,因此按照documentation

  

返回

     

标量测试损失(如果模型只有一个输出并且没有指标),或者   标量列表(如果模型具有多个输出和/或度量)。   属性model.metrics_names将为您提供显示标签   标量输出。

Keras模型evaluate()仅返回损失。

因此,如果您更改代码:

model.compile(loss='sparse_categorical_crossentropy', metrics=['accuracy'], optimizer='rmsprop')

您也可以获得准确性