model.compile中metrics的参数accuracy
知乎大佬链接model.compile(optimizer = tf.keras.optimizers.Adam(0.01),loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits = False),metrics = ['categorical_accuracy'])1.简述IndexParameterLabel Feat
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.简述
Index | Parameter | Label Feature |
---|---|---|
1 | accuracy | 真实值为int,预测值也为int:[0, 1, 3, 3, 4, 2] |
2 | binary_accuracy | 1.二进制标签[0, 0, 0, 1, 1, 0]。 2.有threshold |
3 | categorical_accuracy | 真实值为onehot标签 ,预测值为向量值 |
4 | sparse_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%。
更多推荐
所有评论(0)