可以在 TensorFlow 中使用排名相关作为成本函数吗?

2024-06-01

我正在处理偶尔充满异常值的极其嘈杂的数据,因此我主要依靠相关性来衡量我的神经网络的准确性。

是否可以明确使用诸如等级相关性(斯皮尔曼相关系数)之类的东西作为我的成本函数?到目前为止,我主要依赖 MSE 作为相关性的代理。

我现在面临三个主要障碍:

1)对于小批量,排名的概念变得更加模糊。

2)如何动态进行排名? TensorFlow 是否不会出现梯度误差/无法跟踪权重/偏差的变化如何影响成本?

3)如何确定运行时查看的张量的大小?

例如,如果我只使用相关性,下面的代码就是我想要粗略执行的操作。实际上,长度需要传入而不是在运行时确定。

length = tf.shape(x)[1] ## Example code. This line not meant to work.

original_loss =  -1 * length * tf.reduce_sum(tf.mul(x, y)) - (tf.reduce_sum(x) * tf.reduce_sum(y))
divisor = tf.sqrt(
  (length * tf.reduce_sum(tf.square(x)) - tf.square(tf.reduce_sum(x))) *
  (length * tf.reduce_sum(tf.square(y)) - tf.square(tf.reduce_sum(y)))
)
original_loss = tf.truediv(original_loss, divisor)

这是 Spearman 相关性的代码:

predictions_rank = tf.nn.top_k(predictions_batch, k=samples, sorted=True, name='prediction_rank').indices
real_rank = tf.nn.top_k(real_outputs_batch, k=samples, sorted=True, name='real_rank').indices
rank_diffs = predictions_rank - real_rank
rank_diffs_squared_sum = tf.reduce_sum(rank_diffs * rank_diffs)
six = tf.constant(6)
one = tf.constant(1.0)
numerator = tf.cast(six * rank_diffs_squared_sum, dtype=tf.float32)
divider = tf.cast(samples * samples * samples - samples, dtype=tf.float32)
spearman_batch = one - numerator / divider

Spearman 相关性的问题是您需要使用排序算法(top_k在我的代码中)。并且没有办法将其转化为损失值。没有排序算法的派生。您可以使用正态相关性,但我认为使用均方误差在数学上没有差异。

我现在正在研究图像。我在论文中读到,他们用来将排名添加到损失函数中的是比较 2 或 3 个图像(我说的是图像,你可以说你想要排名的任何内容)。

比较两个元素:

其中 N 是元素总数,α 是边距值。我得到这个方程具有属性和内容适配的照片美学排名网络 https://arxiv.org/abs/1606.01621

您还可以使用具有 3 个元素的损失,将其中两个具有相似排名的元素与另一个具有不同排名的元素进行比较:

但在这个等式中你还需要添加排名的方向,更多细节在人们会喜欢你的形象吗? https://arxiv.org/abs/1611.05203。在本文中,他们使用矢量编码而不是实际值,但您也可以只对数字进行编码。

就图像而言,当这些图像相关时,图像之间的比较更有意义。因此,运行聚类算法来创建(也许?)10 个聚类是一个好主意,这样您就可以使用同一聚类的元素来进行比较,而不是使用非常不同的元素。这将有助于网络,因为输入以某种方式相关,而不是完全不同。

作为旁注,您应该知道什么对您来说更重要,是最终排名顺序还是排名值。如果它是你应该使用均方误差的值,如果它是排名顺序,你可以使用我之前写的损失。或者你甚至可以将它们结合起来。

如何确定运行时查看的张量的大小?

tf.shape(tensor)返回具有形状的张量。然后你可以使用tf.gather(tensor,index)以获得您想要的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以在 TensorFlow 中使用排名相关作为成本函数吗? 的相关文章

随机推荐

  • 在调试模式下运行 NPX 命令

    我有一些npx create react app命令卡住了 终端上没有显示任何错误 所以 我需要运行npx in 调试模式 有没有办法获得debug登录npx命令来识别问题 edit 我运行的命令 npx create react app
  • 如何使用Python将WebP图像转换为Gif?

    我已经尝试过这个 from PIL import Image im Image open this webp im save that gif gif save all True 这给了我这个错误 类型错误 不支持的操作数类型 tuple
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • 尝试从 ExecuteScalar() 获取值时抛出异常

    在下面的代码中 语句 1 抛出强制转换异常 我想知道为什么不拆箱 语句2工作正常 但我想知道为什么第一个是错误的 using IDbCommand command connection CreateCommand command Comma
  • 正则表达式 - 从行首和行尾修剪空格[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions Link
  • 如何将 Spotlight for Help 插入本地化的 macOS 应用程序?

    我正在 macOS 上使用 Swing GUI 框架实现 Java 应用程序 当使用system外观和感觉以及screen菜单栏 Swing 自动插入一个搜索栏 called 聚光灯寻求帮助 https developer apple co
  • Python BeautifulSoup XML 解析

    我编写了一个简单的脚本来使用 BeautifulSoup 模块解析 XML 聊天日志 标准 soup prettify 工作正常 只是聊天日志中有很多绒毛 您可以在下面看到我正在使用的脚本代码和一些 XML 输入文件 Code import
  • 如何在每行中添加行号?

    假设这些是我的数据 Maps and Reduces are two phases of solving a query in HDFS Map is responsible to read data from input location
  • Flask send_from_directory

    我有一个 Flask Web 应用程序 允许用户上传文件 然后下载或在浏览器中显示它们 我应该使用send from directory在生产时从我的服务器上的上传文件夹提供这些文件 你最好让 nginx 为你的静态文件提供服务 众所周知
  • 在 SQL 语句的 WHERE 子句中将 string 转换为 int

    我想实现这个目标 SELECT FROM linkledger WHERE toInt reputation gt 100 但是函数 toInt 不存在 有吗 我现在发现了这个 但不起作用 这意味着我有一个更根本的问题 因为这是正确的 SE
  • Rails 应用程序在模型间保存方面遇到问题

    我正在开发一个从网站下载元标签并然后保存的应用程序 下载发生在一个名为Site 我想将下载的机器人元标签保存到一个名为的模型中robots tag它通过一个名为的连接表连接到站点meta tag sites 但是我在站点模型中编写的用于执行
  • 调试配置之间的快捷切换

    has anyout anyone found a way shortcut or navigation without using the mouse to select different configurations before s
  • layout.xml 的用途是什么?

    人们为什么使用layout xml在他们的resources like
  • 如何使用javascript隐藏div

    我想使用 Javascript 隐藏一个 div 下面是我的div div class ui dialog titlebar ui widget header ui corner all ui helper clearfix span cl
  • 如何在 PHP 数组中的另一个已知(通过键或指针)元素之后有效地插入元素?

    给定一个数组 a array abc 123 k1 gt v1 k2 gt v2 78 tt k3 gt v3 当其内部指针指向其元素之一时 如何在当前元素之后插入元素 如何在键已知元素 例如 k1 之后插入元素 表现护理 您可以通过使用拆
  • 大小为 8 的无效写入,C Valgrind,字符串数组

    我一直在使用 valgrind 和 gdb 但我不太明白问题是什么 它跳来跳去太多了 我无法在 gdb 中真正追踪它 而在 valgrind 中我没有足够的信息 这是我的 makeargv 函数 它将 strtok 输出的字符串放入数组中
  • 在事件聚合器中混合枚举与事件类

    我最近尝试实现自己的简单事件聚合器 我从 MSDN 上的事件聚合器文章中获得了很多灵感 关于 MSDN 上的事件聚合器 我注意到一件事是事件实际上是它们自己的类 这根本不是一件坏事 然而 我只是觉得总是为每个小事件创建一个新的空类很尴尬 我
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • JavaFX - setVisible 隐藏元素但不重新排列相邻节点

    在 JavaFX 中 如果我有一个场景有 2VBox元素和每个VBox有多个Label in it 如果我设置顶部VBox to 无形的 为什么底部VBox 不向上移动顶部的场景VBox was The VBox is 无形的但我希望其他物
  • 可以在 TensorFlow 中使用排名相关作为成本函数吗?

    我正在处理偶尔充满异常值的极其嘈杂的数据 因此我主要依靠相关性来衡量我的神经网络的准确性 是否可以明确使用诸如等级相关性 斯皮尔曼相关系数 之类的东西作为我的成本函数 到目前为止 我主要依赖 MSE 作为相关性的代理 我现在面临三个主要障碍