【问题标题】:What does the interleave_keys() function in torchtext library do exactly?torchtext 库中的 interleave_keys() 函数究竟做了什么?
【发布时间】:2020-01-02 13:47:28
【问题描述】:

你可以在torchtext/data/utils.py文件找到这个函数

我已经给出了官方代码和下面的文档

def interleave_keys(a, b):
    """Interleave bits from two sort keys to form a joint sort key.

    Examples that are similar in both of the provided keys will have similar
    values for the key defined by this function. Useful for tasks with two
    text fields like machine translation or natural language inference.
    """
    def interleave(args):
        return ''.join([x for t in zip(*args) for x in t])
    return int(''.join(interleave(format(x, '016b') for x in (a, b))), base=2)

更详细的解释将有助于理解它如何根据给定的两个字符串的相似程度返回一个整数。

而且里面使用的格式化函数是python中常用的内置函数

【问题讨论】:

  • 您是否尝试过分解函数并查看数据经过了哪些转换?
  • 嘿@Carcigenicate,我没有尝试过,它会尝试让你知道

标签: python pytorch sentence-similarity torchtext


【解决方案1】:

所以在分解函数后,我能够弄清楚这个函数在做什么。

format(x, '016b') 这段代码将整数(在我的例子中实际上是句子中没有单词的 a 和 b)转换为 16 位二进制数。

interleave 函数取出二进制表示的(相同位置的)对像这样加入它们,

为了便于理解,我们假设 2 和 11 是 4 位二进制

2的二进制表示为:0 0 1 0

11的二进制表示为:1 0 1 1

所以这里的输出将是 01001101(01,00,11,01 已合并)当转换为整数时将给出 77

【讨论】:

    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 2012-07-23
    • 2016-09-10
    • 2023-03-15
    • 2012-10-17
    • 2021-06-04
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多