model.compile中metrics的参数accuracy

知乎大佬链接

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%。

  • 14
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: `model.compile()` 函数的 `metrics` 参数用于指定在训练和评估模型时要使用的指标。该参数是一个列表,可以包含多个指标。 以下是一些常用的 metrics 指标及其用途: - `accuracy`(准确率):在分类问题,用于评估模型的正确分类比例。 - `precision`(精确率):在分类问题,表示模型预测为正类的样本有多少是真正的正类样本。 - `recall`(召回率):在分类问题,表示模型能够正确识别为正类的样本占所有正类样本的比例。 - `AUC`(曲线下面积):用于评估二元分类模型的性能,表示ROC曲线下方的面积,值越大越好。 - `mse`(均方误差):用于回归问题,表示预测值与真实值之间差的平方的平均值。 - `mae`(平均绝对误差):用于回归问题,表示预测值与真实值之间差的绝对值的平均值。 例如,以下代码将使用准确率和AUC作为模型的指标: ```python model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy', 'AUC']) ``` ### 回答2: model.compile是Keras用于编译模型的方法,其metrics参数用于设置评估指标。metrics参数可以是一个字符串,也可以是一个列表。 当metrics参数是一个字符串时,它表示模型在训练和测试过程要使用的指标。常用的指标包括accuracy(准确度),precision(精确率),recall(召回率),f1-score等。这些指标可以用来评估模型的性能,帮助我们了解模型的表现如何。 当metrics参数是一个列表时,它表示模型在训练和测试过程要使用的多个指标。列表的每个指标可以是一个字符串,也可以是一个自定义的评估函数。 同时值得注意的是,metrics参数只是用于监控模型的训练和测试过程的指标,并不影响模型的训练结果和预测输出。在训练过程,模型会根据指定的损失函数进行优化,并且输出的预测结果是根据模型的输出层计算得出的。 总的来说,metrics参数是Keras一个非常重要的参数,它可以帮助我们了解模型的表现情况,判断模型是否存在过拟合或欠拟合等问题,并进一步优化我们的模型。 ### 回答3: model.compile()函数是keras模型编译函数,它允许我们指定模型的优化器、损失函数和度量指标。其,度量指标就是通过metrics参数来定义的。 metrics参数定义了模型训练过程需要测量的指标。将metrics参数设置为一个列表,可以同时测量多个指标。在训练和评估模型时,这些指标将被计算并存储在返回的History对象的history字典。 常见的度量指标包括: 1. accuracy:准确率,是分类问题最常用的度量指标,表示正确预测的样本数占总样本数的比例。 2. precision:精确率,表示真正例占预测为正例的比例。 3. recall:召回率,表示真正例占实际为正例的比例。 4. f1-score:F1得分,精确率和召回率的加权平均值,用于综合评估分类模型的性能。 5. AUC:ROC曲线下的面积,用于评估二分类模型的性能。AUC越接近1,模型性能越好。 除了上述指标,还可以自定义度量指标。自定义度量指标需要定义一个函数,该函数应接受两个张量y_true和y_pred,并返回一个标量。在使用自定义度量指标时,可以将函数名称传递给metrics参数。 总之,通过metrics参数,我们可以指定模型需要测量的指标,以便评估模型的性能并进行优化。在选择度量指标时,应根据具体问题选择合适的指标,以便更好地评估模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值