如何解决使用精度度量进行 MNIST 数字分类时出错
我正在尝试使用 Tensorflow 和 Keras 在 MNIST 数据集上获得较高的精度分数。如果我将指标设置为准确度,我的代码可以正常工作,但是当我将其设置为精度时,它会出现以下错误:
ValueError: Shapes (32,10) and (32,1) are incompatible
这是我的代码:
import tensorflow as tf
import keras
from tensorflow.keras.datasets import mnist
def bulid_model(n = 1,neuron=30,lr = 3e-3,input_shape=(784,)):
model = keras.models.Sequential()
model.add(keras.layers.InputLayer(input_shape=input_shape))
for layer in range(n):
model.add(keras.layers.Dense(neuron,activation = 'relu'))
model.add(keras.layers.Dense(10,activation='softmax'))
optimizer = keras.optimizers.Adam(lr = lr)
model.compile(loss = 'sparse_categorical_crossentropy',optimizer=optimizer,metrics = [keras.metrics.Precision()])
return model
if __name__ == "__main__":
(X_train,Y_train),(X_test,Y_test) = mnist.load_data()
X_train = X_train.reshape(60000,784)
X_test = X_test.reshape(10000,784)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255
model = bulid_model(3,20,0.0156)
history = model.fit(X_train,Y_train,epochs=50)
谁能帮我解决这个问题?
解决方法
精度,是二元分类的度量。它计算 true_positives
和 false_positives
,然后简单地将 true_positives
除以 true_positives
和 false_positives
的总和。
但是 Accuracy
指标可用于像 MNIST 这样的多类分类,因为它计算预测与标签相等的频率。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。