在 Keras 中创建自定义指标时,y_true 和 y_pred 是什么?

本文介绍了在 Keras 中创建自定义指标时,y_true 和 y_pred 是什么?的处理方法,对大家解决问题具有一定的参考价值

问题描述

我想在 Keras 中实现我的自定义指标.根据文档,我的自定义指标应定义为一个函数,该函数将两个张量 y_predy_true 作为输入,并返回单个张量值.

I want to implement my custom metric in Keras. According to the documentation, my custom metric should be defined as a function that takes as input two tensors, y_pred and y_true, and returns a single tensor value.

但是,当优化运行时,我对这些张量 y_predy_true 中究竟包含什么感到困惑.它只是一个数据点吗?是整批吗?整个时代(可能不是)?有没有办法获得这些张量的形状?

However, I'm confused to what exactly will be contained in these tensors y_pred and y_true when the optimization is running. Is it just one data point? Is it the whole batch? The whole epoch (probably not)? Is there a way to obtain these tensors' shapes?

有人可以指出我可以获取这些信息的可靠地方吗?任何帮助,将不胜感激.不确定是否相关,但我使用的是 TensorFlow 后端.

Can someone point to a trustworthy place where I can get this information? Any help would be appreciated. Not sure if relevant, but I'm using TensorFlow backend.

到目前为止我尝试过的事情,以回答这个问题:

Things I tried so far, in order to answer this:

  • 检查 Keras 指标文档(没有解释这些张量是什么).
  • 检查 Keras 指标的源代码 并尝试通过查看其他指标的 Keras 实现来了解这些张量(这似乎表明 y_truey_pred 具有整个批次的标签,但我不确定).
  • 阅读这些 stackoverflow 问题:123 和其他人(没有人回答我的问题,大多数都集中在 OP 上,没有清楚地理解张量与会话期间使用该张量计算的值之间的区别).
  • 在优化过程中打印 y_truey_pred 的值,通过定义如下指标:
  • Checking the Keras metrics documentation (no explanation there about what these tensors are).
  • Checking the source code for the Keras metrics and trying to understand these tensors by looking at the Keras implementation for other metrics (This seems to suggest that y_true and y_pred have the labels for an entire batch, but I'm not sure).
  • Reading these stackoverflow questions: 1, 2, 3, and others (none answer my question, most are centered on the OP not clearly understanding the difference between a tensor and the values computed using that tensor during the session).
  • Printing the values of y_true and y_pred during the optimization, by defining a metric like this:
    def test_metric(y_true, y_pred):
        y_true = K.print_tensor(y_true)
        y_pred = K.print_tensor(y_pred)
        return y_true - y_pred

(不幸的是,这些在优化过程中不会打印任何内容).

(unfortunately these don't print anything during the optimization).

推荐答案

y_true 和 y_pred

张量 y_true 是您传递给 fit 方法的真实数据(或目标、地面实况).
它是将 numpy 数组 y_train 转换为张量.

y_true and y_pred

The tensor y_true is the true data (or target, ground truth) you pass to the fit method.
It's a conversion of the numpy array y_train into a tensor.

张量 y_pred 是您的模型预测(计算、输出)的数据.

The tensor y_pred is the data predicted (calculated, output) by your model.

通常,y_truey_pred 的形状完全相同.一些损失,例如稀疏的损失,可以接受不同形状的损失.

Usually, both y_true and y_pred have exactly the same shape. A few of the losses, such as the sparse ones, may accept them with different shapes.

它包含一整批.它的第一个维度始终是批大小,并且它必须存在,即使批只有一个元素.

It contains an entire batch. Its first dimension is always the batch size, and it must exist, even if the batch has only one element.

找到y_true 形状的两种非常简单的方法是:

Two very easy ways to find the shape of y_true are:

  • 检查您的真实/目标数据:print(Y_train.shape)
  • 检查您的 model.summary() 并查看最后的输出
  • check your true/target data: print(Y_train.shape)
  • check your model.summary() and see the last output

但它的第一个维度将是批量大小.

But its first dimension will be the batch size.

所以,如果你的最后一层输出 (None, 1)y_true 的形状是 (batch, 1).如果最后一层输出 (None, 200,200, 3),则 y_true 将是 (batch, 200,200,3).

So, if your last layer outputs (None, 1), the shape of y_true is (batch, 1). If the last layer outputs (None, 200,200, 3), then y_true will be (batch, 200,200,3).

不幸的是,打印自定义指标不会显示其内容(除非您正在使用 Eager 模式,并且您已经使用数据计算了模型的每一步).
例如,您可以使用 print(K.int_shape(y_pred)) 来查看它们的形状.

Unfotunately, printing custom metrics will not reveal their content (unless you are using eager mode on, and you have calculated every step of the model with data).
You can see their shapes with print(K.int_shape(y_pred)), for instance.

请记住,这些库首先编译图形",然后使用数据运行它".定义损失时,您处于编译阶段,请求数据需要模型运行.

Remember that these libraries first "compile a graph", then later "runs it with data". When you define your loss, you're in the compile phase, and asking for data needs the model to run.

但即使您的度量结果是多维的,keras 也会自动找到为该度量输出单个标量的方法.(不确定操作是什么,但很可能隐藏在表下的 K.mean() - 返回整个批次很有趣,因此 Keras 应用其他操作,例如样本权重).

But even if the result of your metric is multidimensional, keras will automatically find ways to output a single scalar for that metric. (Not sure what is the operation, but very probably a K.mean() hidden under the table - it's interesting to return the entire batch, so Keras applies other operations such as sample weights, for instance).

来源.在你习惯了 keras 之后,简单地阅读这部分内容就会很自然地理解:

Sources. After you get used to keras, this understanding gets natural from simply reading this part:

y_true: 真实标签.Theano/TensorFlow 张量.
y_pred: 预测.与 y_true 形状相同的 Theano/TensorFlow 张量.

y_true: True labels. Theano/TensorFlow tensor.
y_pred: Predictions. Theano/TensorFlow tensor of the same shape as y_true.

真实标签表示真实/目标数据.标签在这里是一个错误选择的词,它只是真正的标签".在分类模型中.
预测意味着您的模型的结果.

True labels mean true/target data. Labels is a badly chosen word here, it is only really "labels" in classification models.
Predictions mean the results of your model.

这篇关于在 Keras 中创建自定义指标时,y_true 和 y_pred 是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,WP2

admin_action_{$_REQUEST[‘action’]}

do_action( "admin_action_{$_REQUEST[‘action’]}" )动作钩子::在发送“Action”请求变量时激发。Action Hook: Fires when an ‘action’ request variable is sent.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$_REQUEST['action']引用从GET或POST请求派生的操作。源码(Source)更新版本源码位置使用被使用2.6.0 wp-admin/admin.php:...

日期:2020-09-02 17:44:16 浏览:1172

admin_footer-{$GLOBALS[‘hook_suffix’]}

do_action( "admin_footer-{$GLOBALS[‘hook_suffix’]}", string $hook_suffix )操作挂钩:在默认页脚脚本之后打印脚本或数据。Action Hook: Print scripts or data after the default footer scripts.目录锚点:#说明#参数#源码说明(Description)钩子名的动态部分,$GLOBALS['hook_suffix']引用当前页的全局钩子后缀。参数(Parameters)参数类...

日期:2020-09-02 17:44:20 浏览:1071

customize_save_{$this->id_data[‘base’]}

do_action( "customize_save_{$this->id_data[‘base’]}", WP_Customize_Setting $this )动作钩子::在调用WP_Customize_Setting::save()方法时激发。Action Hook: Fires when the WP_Customize_Setting::save() method is called.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_data...

日期:2020-08-15 15:47:24 浏览:808

customize_value_{$this->id_data[‘base’]}

apply_filters( "customize_value_{$this->id_data[‘base’]}", mixed $default )过滤器::过滤未作为主题模式或选项处理的自定义设置值。Filter Hook: Filter a Customize setting value not handled as a theme_mod or option.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_date['base'],指的是设置...

日期:2020-08-15 15:47:24 浏览:900

get_comment_author_url

过滤钩子:过滤评论作者的URL。Filter Hook: Filters the comment author’s URL.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/comment-template.php:32610...

日期:2020-08-10 23:06:14 浏览:930

network_admin_edit_{$_GET[‘action’]}

do_action( "network_admin_edit_{$_GET[‘action’]}" )操作挂钩:启动请求的处理程序操作。Action Hook: Fires the requested handler action.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$u GET['action']引用请求的操作的名称。源码(Source)更新版本源码位置使用被使用3.1.0 wp-admin/network/edit.php:3600...

日期:2020-08-02 09:56:09 浏览:877

network_sites_updated_message_{$_GET[‘updated’]}

apply_filters( "network_sites_updated_message_{$_GET[‘updated’]}", string $msg )筛选器挂钩:在网络管理中筛选特定的非默认站点更新消息。Filter Hook: Filters a specific, non-default site-updated message in the Network admin.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分$_GET['updated']引用了非默认的...

日期:2020-08-02 09:56:03 浏览:865

pre_wp_is_site_initialized

过滤器::过滤在访问数据库之前是否初始化站点的检查。Filter Hook: Filters the check for whether a site is initialized before the database is accessed.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/ms-site.php:93910...

日期:2020-07-29 10:15:38 浏览:834

WordPress 的SEO 教学:如何在网站中加入关键字(Meta Keywords)与Meta 描述(Meta Description)?

你想在WordPress 中添加关键字和meta 描述吗?关键字和meta 描述使你能够提高网站的SEO。在本文中,我们将向你展示如何在WordPress 中正确添加关键字和meta 描述。为什么要在WordPress 中添加关键字和Meta 描述?关键字和说明让搜寻引擎更了解您的帖子和页面的内容。关键词是人们寻找您发布的内容时,可能会搜索的重要词语或片语。而Meta Description则是对你的页面和文章的简要描述。如果你想要了解更多关于中继标签的资讯,可以参考Google的说明。Meta 关键字和描...

日期:2020-10-03 21:18:25 浏览:1733

谷歌的SEO是什么

SEO (Search Engine Optimization)中文是搜寻引擎最佳化,意思近于「关键字自然排序」、「网站排名优化」。简言之,SEO是以搜索引擎(如Google、Bing)为曝光媒体的行销手法。例如搜寻「wordpress教学」,会看到本站的「WordPress教学:12个课程…」排行Google第一:关键字:wordpress教学、wordpress课程…若搜寻「网站架设」,则会看到另一个网页排名第1:关键字:网站架设、架站…以上两个网页,每月从搜寻引擎导入自然流量,达2万4千:每月「有机搜...

日期:2020-10-30 17:23:57 浏览:1309