我刚开始使用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进行编码。 请帮忙!
答案 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')
您也可以获得准确性。