在Python中使用适当的超参数训练MNIST模型
这是我的代码,我不知道为什么它给了我0.3%的准确率 有人能告诉我这个代码有什么问题吗在Python中使用适当的超参数训练MNIST模型,python,tensorflow,keras,Python,Tensorflow,Keras,这是我的代码,我不知道为什么它给了我0.3%的准确率 有人能告诉我这个代码有什么问题吗 def列列表(): mnist=tf.keras.datasets.mnist (x_列,y_列),(x_测试,y_测试)=列表负载数据() x_系列,x_测试=x_系列/255.0,x_测试/255.0 模型=tf.keras.models.Sequential([ tf.keras.layers.Flatten(输入_形状=(28,28)), tf.keras.layers.Dense(128,活化='r
def列列表():
mnist=tf.keras.datasets.mnist
(x_列,y_列),(x_测试,y_测试)=列表负载数据()
x_系列,x_测试=x_系列/255.0,x_测试/255.0
模型=tf.keras.models.Sequential([
tf.keras.layers.Flatten(输入_形状=(28,28)),
tf.keras.layers.Dense(128,活化='relu'),
tf.keras.层压降(0.2),
tf.keras.致密层(10)
])
model.compile(优化器='adam',
损失=“稀疏”\u分类”\u交叉熵',
指标=[‘准确度’])
历史=模型.fit(x_系列,y_系列,历代=5)
返回history.epoch,history.history['acc'][-1]
列车时刻表()
非常感谢这会有用的!试试这个
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
model.compile(optimizer='adam',
loss=loss_fn,
metrics=['accuracy'])
这会有用的!试试这个
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
model.compile(optimizer='adam',
loss=loss_fn,
metrics=['accuracy'])
问题似乎是你失去了功能 试试这个: 方法1 您可以使用
categorical\u crossentropy
作为损失,但最后一层应该是
tf.keras.layers.Dense(10,activation='softmax')
然后
model.compile(optimizer = 'adam',
loss"categorical_crossentropy",
metrics=["accuracy"])
方法2
在您的例子中,需要定义sparse\u categorical\u crossentropy
损失
tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True,name='sparse_categorical_crossentropy')
要了解这两者的区别,请参见,问题似乎在于损失函数 试试这个: 方法1 您可以使用
categorical\u crossentropy
作为损失,但最后一层应该是
tf.keras.layers.Dense(10,activation='softmax')
然后
model.compile(optimizer = 'adam',
loss"categorical_crossentropy",
metrics=["accuracy"])
方法2
在您的例子中,需要定义sparse\u categorical\u crossentropy
损失
tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True,name='sparse_categorical_crossentropy')
要理解这两者的区别,请看我想这不是你想要的,但它可能会帮助某人:卷积神经网络将是最好的选择。我想这不是你想要的,但它可能会帮助某人:卷积神经网络将是最好的选择。