【发布时间】:2020-12-17 23:57:20
【问题描述】:
在训练神经网络时,在时尚 mnist 数据集上,我决定输出层中的节点数要多于数据集中的类数。
数据集有 10 个类,而我训练我的网络在输出层有 15 个节点。我还使用了softmax。
现在令人惊讶的是,这给了我 97% 的准确率,非常好。
这让我想到一个问题,那些额外的 5 个节点甚至意味着什么,它们在这里做什么?
标签范围(0-9)不等于节点数(15)时,为什么我的softmax能正常工作?
最后,一般来说,在分类任务中,输出层中的节点数多于类数意味着什么?
我了解节点数少于类数的影响,并且经验法则是使用节点数 = 类数。然而,我从未见过有人使用更多节点,我想了解为什么/为什么不使用。
我附上了一些代码,以便可以重现结果。这是使用 TensorFlow 2.3 完成的
import tensorflow as tf
print(tf.__version__)
mnist = tf.keras.datasets.mnist
(training_images, training_labels) , (test_images, test_labels) = mnist.load_data()
training_images = training_images/255.0
test_images = test_images/255.0
model = tf.keras.models.Sequential([tf.keras.layers.Flatten(),
tf.keras.layers.Dense(256, activation=tf.nn.relu),
tf.keras.layers.Dense(15, activation=tf.nn.softmax)])
model.compile(optimizer = 'adam',
loss = 'sparse_categorical_crossentropy',
metrics = ['accuracy'])
model.fit(training_images, training_labels, epochs=5)
model.evaluate(test_images, test_labels)
【问题讨论】:
标签: tensorflow neural-network classification