1.sparse_categorical_crossentropy
label数组中的数据全为0-9,表示十种分类。
model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
model.add(tf.keras.layers.Dense(128, activation=‘relu’))
model.add(tf.keras.layers.Dense(10, activation=‘softmax’))
model.compile(optimizer=‘adam’,
loss = ‘sparse_categorical_crossentropy’,
metrics=[‘acc’])
2.categorical_crossentropy
当labe使用one-hot编码时,使用categorical_crossentropy。比如北京[1, 0, 0] 上海[0, 1, 0] 深圳[0, 0, 1]
model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
model.add(tf.keras.layers.Dense(128, activation=‘relu’))
model.add(tf.keras.layers.Dense(10, activation=‘softmax’))
model.compile(optimizer=‘adam’,
loss = ‘categorical_crossentropy’,
metrics=[‘acc’])
3.from_logits
from_logits=False,output为经过softmax输出的概率值。 # from_logits=True,output为经过网络直接输出的 logits张量。
loss_object = tf.keras.losses.SparseCategoricalCrossentropy(
from_logits=False, reduction=‘none’)