知乎大佬链接

model.compile(optimizer = tf.keras.optimizers.Adam(0.01),
              loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits = False),
              metrics = ['categorical_accuracy'])

tf.keras.callbacks.ModelCheckpoint(filepath = ck_path, save_best_only = True, monitor = 'loss')

0.注意

0.1 在此处设置 model.compile() 的参数将影响 history = model.fit() 的返回曲线。
因为有的时候没有验证集,要把 tf.keras.callbacks.ModelCheckpoint() 中的 monitor 设置为 ‘loss’,这是系统会记录 loss 曲线 。
例:

history = model.fit(x_train, y_train, batch_size = 32, epochs = 5, callbacks = [cp_callback])
#在上面代码片的情况下只能返回 categorical_accuracy 的曲线
acc = history.history['categorical_accuracy']
loss = history.history['loss']

0.2 当系统不观测准确率时,在 model.compile() 中不要填 metircs 参数。

# 该应用只观测loss数值,不观测准确率,所以删去metrics选项,
# 一会在每个epoch迭代显示时只显示loss值
model.compile(optimizer=tf.keras.optimizers.Adam(0.001),
              loss='mean_squared_error')  

1.简述

IndexParameterLabel Feature
1accuracy真实值为int,预测值也为int:[0, 1, 3, 3, 4, 2]
2binary_accuracy1.二进制标签[0, 0, 0, 1, 1, 0]。 2.有threshold
3categorical_accuracy真实值为onehot标签 ,预测值为向量值
4sparse_categorical_accuracy真实值为int, 预测值为向量值

2.常用参数

2.1.accuracy

比如我们有6个样本,其真实标签y_true为[0, 1, 3, 3, 4, 2],但被一个模型预测为了[0, 1, 3, 4, 4, 4],即y_pred=[0, 1, 3, 4, 4, 4],那么该模型的accuracy=4/6=66.67%。

2.2.binary_accuracy

适用于2分类的情况。从上图中可以看到binary_accuracy的计算除了y_true和y_pred外,还有一个threshold参数,该参数默认为0.5。比如有6个样本,其y_true为[0, 0, 0, 1, 1, 0],y_pred为[0.2, 0.3, 0.6, 0.7, 0.8, 0.1],那么其binary_accuracy=5/6=87.5%。具体计算方法为:1)将y_pred中的每个预测值和threshold对比,大于threshold的设为1,小于等于threshold的设为0,得到y_pred_new=[0, 0, 1, 1, 1, 0];2)将y_true和y_pred_new代入到2.1中计算得到最终的binary_accuracy=87.5%。

2.3.categorical_accuracy

accuracy针对的是y_true和y_pred都为具体标签的情况,而categorical_accuracy针对的是y_true为onehot标签,y_pred为向量的情况。比如有4个样本,其y_true为[[0, 0, 1], [0, 1, 0], [0, 1, 0], [1, 0, 0]],y_pred为[[0.1, 0.6, 0.3], [0.2, 0.7, 0.1], [0.3, 0.6, 0.1], [0.9, 0, 0.1]],则其categorical_accuracy为75%。具体计算方法为:1)将y_true转为非onehot的形式,即y_true_new=[2, 1, 1, 0];2)根据y_pred中的每个样本预测的分数得到y_pred_new=[1, 1, 1, 0];3)将y_true_new和y_pred_new代入到2.1中计算得到最终的categorical_accuracy=75%。

2.4.sparse_categorical_accuracy

和categorical_accuracy功能一样,只是其y_true为非onehot的形式。比如有4个样本,其y_true为[2, 1, 1, 0],y_pred为[[0.1, 0.6, 0.3], [0.2, 0.7, 0.1], [0.3, 0.6, 0.1], [0.9, 0, 0.1]],则其categorical_accuracy为75%。具体计算方法为:1)根据y_pred中的每个样本预测的分数得到y_pred_new=[1, 1, 1, 0];2)将y_true和y_pred_new代入到2.1中计算得到最终的categorical_accuracy=75%。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐