特征列嵌入查找

2023-11-26

我一直在使用tensorflow中的数据集和feature_columns(https://developers.googleblog.com/2017/11/introducing-tensorflow-feature-columns.html)。我看到它们具有分类特征以及从分类特征创建嵌入特征的方法。但是在处理 nlp 任务时,我们如何创建单个嵌入查找?

例如:考虑文本分类任务。每个数据点都会有很多文本列,但它们不会是单独的类别。我们如何为所有这些列创建和使用单个嵌入查找?

下面是我当前如何使用嵌入功能的示例。我正在为每一列构建一个分类特征,并使用它来创建嵌入。问题是同一单词的嵌入对于不同的列可能不同。

def create_embedding_features(key, vocab_list=None, embedding_size=20):
    cat_feature = \
        tf.feature_column.categorical_column_with_vocabulary_list(
            key=key,
            vocabulary_list = vocab_list
            )
    embedding_feature = tf.feature_column.embedding_column(
            categorical_column = cat_feature,
            dimension = embedding_size
        )
    return embedding_feature

le_features_embd = [create_embedding_features(f, vocab_list=vocab_list)
                     for f in feature_keys]

我认为你有一些误解。对于文本分类任务,如果您的输入是一段文本(一个句子),则应该将整个句子视为单个特征列。因此每个数据点只有一个文本列NOT很多专栏。此列中的值通常是所有标记的组合嵌入。这就是我们将 var-length 稀疏特征(未知数量的文本标记)转换为一个密集特征(例如,固定的 256 维浮点向量)的方式。

让我们从一个_CategoricalColumn.

cat_column_with_vocab = tf.feature_column.categorical_column_with_vocabulary_list(
    key='my-text',
    vocabulary_list=vocab_list)

请注意,如果您的词汇量很大,则应该使用categorical_column_with_vocabulary_file.

我们通过使用初始化器从检查点读取(如果我们有预先训练的嵌入)或随机化来创建嵌入列。

embedding_initializer = None
if has_pretrained_embedding:     
  embedding_initializer=tf.contrib.framework.load_embedding_initializer(
        ckpt_path=xxxx)
else:
  embedding_initializer=tf.random_uniform_initializer(-1.0, 1.0)
embed_column = embedding_column(
    categorical_column=cat_column_with_vocab,
    dimension=256,   ## this is your pre-trained embedding dimension
    initializer=embedding_initializer,
    trainable=False)

假设你有另一个密集特征price:

price_column = tf.feature_column.numeric_column('price')

创建您的特色栏

columns = [embed_column, price_column]

构建模型:

features = tf.parse_example(..., 
    features=make_parse_example_spec(columns))
dense_tensor = tf.feature_column.input_layer(features, columns)
for units in [128, 64, 32]:
  dense_tensor = tf.layers.dense(dense_tensor, units, tf.nn.relu)
prediction = tf.layers.dense(dense_tensor, 1)

顺便说一下,对于tf.parse_example要工作,这假设您的输入数据是tf.Example像这样(文本protobuf):

features {
  feature {
    key: "price"
    value { float_list {
      value: 29.0
    }}
  }
  feature {
    key: "my-text"
    value { bytes_list {
      value: "this"
      value: "product"
      value: "is"
      value: "for sale"
      value: "within"
      value: "us"
    }}
  }
}

也就是说,我假设你有两种特征类型,一种是产品价格,另一种是产品的文字描述。你的词汇表将是以下的超集

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

特征列嵌入查找 的相关文章

随机推荐

  • ASP .NET Core webapi在中间件中设置cookie

    我试图在执行操作后设置一个 cookie 努力使其工作 如果我从控制器而不是中间件设置它 我就能看到cookie 我已经按照配置顺序进行了操作 但什么也没有 代码示例来自一个干净的 webapi 创建的项目 所以如果有人想玩它很简单 只需创
  • Python-从文本文件中查找行号[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在编写在文本文件中查找的代码 并查看输入是否在其中 E g 我输入 披萨 我的文本文件包含 bread pizza pasta tomato 有没有办法打印披萨一词所在的行号
  • 基于 os 系列的 Maven 条件

    我正在尝试执行以下操作
  • 压缩和未压缩的 .wav 文件

    压缩和未压缩的 wav 文件有什么区别 The WAV格式是 Windows 中音频文件的容器格式 WAV 文件由标题和内容组成 标头包含有关 WAV 文件中包含的音频的大小 持续时间 采样频率 分辨率以及其他信息 通常 标头之后是实际的音
  • 使用 print.xtable 更改表格的字体大小

    我想使用 print xtable 更改表格的字体大小 Using print xT size tiny 有效 但我不知道其他尺寸选项 像 size 7pt 这样的东西会很好 您可以使用以下命令选择特定的字体大小 fontsize
  • 捕获更通用的异常类型是否有好处?

    如果我们要捕捉特定形式的IOException 或任何其他类型的 事实上 我们只尝试捕获几个 并为它们定义明确的输出 说 FileNotFoundException ZipException 我们是否应该始终把它拖下来并用一个覆盖所有基地
  • Windows Phone 开发和单元测试

    我希望启动一个针对 Windows Phone 的项目 但由于缺乏单元测试支持 我有点推迟了 1 我习惯于使用 NUnit XUnit 来满足我的大部分测试需求 并使用 NSubstitute 之类的东西来进行模拟 据我所知 您不能将这些框
  • 不抛出异常时的性能(C++)[重复]

    这个问题在这里已经有答案了 我已经阅读了很多有关 C 异常的内容 并且我所看到的 特别是异常性能是一个很难的话题 我什至试图深入了解 g 的底层 看看异常是如何在汇编中表示的 我是一名 C 程序员 因为我更喜欢低级语言 不久前 我决定使用
  • django-compressor 是否支持模板继承?

    我在用着Django 压缩器压缩我网站的静态 CSS 和 Javascript 文件 由于我通过 Amazon S3 提供网站的静态资产 因此我还使用Django 存储将我的文件上传到 S3 这是我的问题 我正在努力清理base html我
  • 强制 attr=title 弹出 on 元素

    有没有办法 我可以强制元素在元素悬停时显示 标题 弹出窗口 或者如果没有 有没有办法 我可以配置显示标题弹出窗口之前的超时时间 默认情况下 标题在悬停时显示 您无法更改其行为
  • Javascript 或 Flash 导出至 CSV/Excel

    是否有办法将 JSON 数据导出到 CSV Excel 而无需与服务器端进行任何交互 仅使用 JavaScript 还是闪存 我目前正在使用 ZeroClipboard 将值复制到剪贴板 但我想从浏览器 FF Chrome IE 等 直接将
  • net/http.rb:560:in `initialize': getaddrinfo: 名称或服务未知(SocketError)

    timestamp nil def generate oauth url timestamp timestamp url CONNECT URL REQUEST TOKEN PATH oauth callback OAUTH CALLBAC
  • 带有 v-for 的动态 v 模型

    我有一个 v for 循环 它将吐出多行输入 我想将每个单独的行动态保存到数组对象中 v for table class table m 0 tbody tr td fund name td tr tbody table
  • 来自电子邮件地址的域的正则表达式

    任何人都可以帮助我使用正则表达式来返回电子邮件地址的末尾部分 符号之后 吗 我是正则表达式的新手 但想学习如何使用它 而不是编写低效的 Net 字符串函数 例如 对于输入 电子邮件受保护 我需要 example com 的输出 干杯 蒂姆
  • $q.reject 和处理 AngularJS 链式承诺中的错误

    我无法理解使用链接承诺进行错误处理的基本概念 为了学习规则 我写了一个简单的例子 猜测结果会是什么 但不幸的是 它的行为并不像我想象的那样 我已经阅读了多篇有关该主题的文章 但由于我的英语水平不佳 我可能无法获得详细信息 无论如何 这是我的
  • Python 文件变量 - 它是什么?

    我刚刚开始使用 Python 由于我的背景是低级语言 java C 所以我无法真正理解一些东西 因此 在 python 中 我们可以通过打开一个文本文件来创建一个文件变量 然后像这样迭代它的行 f open sys argv 1 for l
  • 正则表达式匹配任何大于 1 的整数

    我最近刚刚开始学习正则表达式 我正在尝试找出如何匹配任何大于 1 的数字的模式 到目前为止我想出了 2 9 0 9 但它仅适用于最左边的数字不为 1 的情况 例如 234有效但是124没有 所以我想要实现的是个位数1不应匹配任何大于应匹配的
  • Postgres 是否支持嵌套或自治事务?

    我遇到的情况是 我必须将一部分代码作为其自己的事务提交 我创建了一个表subtransaction tbl CREATE TABLE subtransaction tbl entryval integer 以及 plpython3u 语言中
  • 如何在 Mac OSX 上安装 PCRE 开发标头

    我刚刚将 MacBook Pro 升级到 Mavericks 当我访问时 我本地的 Ruby on Rails 开发环境并没有立即运行localhost I see It works 并记得我需要启动 Phusion Passenger 所
  • 特征列嵌入查找

    我一直在使用tensorflow中的数据集和feature columns https developers googleblog com 2017 11 introducing tensorflow feature columns htm