0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TensorFlow再填新功能!谷歌宣布推出TensorFlow.Text

DPVg_AI_era 来源:lq 2019-06-15 09:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

谷歌发布TensorFlow优化新功能TF.Text库,可对语言文本AI模型进行周期性预处理,大大节约了AI开发者对文本模型的训练时间,简化训练流程。

TensorFlow再填新功能!

谷歌宣布推出TensorFlow.Text,这是一个利用TensorFlow对语言文本模型进行预处理的库。TF官博第一时间发布了更新消息,并对TF.Text的新功能和特性进行了简要介绍。

TensorFlow一直以来致力于为用户提供更广泛的选择,帮助用户利用图像和视频数据构建模型。但是,许多模型是以文本开头的,从这些模型构建的语言模型需要进行一些预处理,才能将文本输入到模型中。比如关于使用IMDB数据集的文本分类教程,就是从已经转换为整数ID的文本数据开始入手的。

如果模型训练和推理的时间不一样,在训练过程以外完成的预处理可能会和模型产生偏差,这就需要额外投入更多的时间和精力对预处理的过程进行协调。

TensorFlow本次推出的TF.Text就是为了解决这个问题,TF.Text是一个TensorFlow 2.0库,可以使用PIP命令轻松安装。它可以在基于文本的模型中定期执行这些预处理过程,并提供TensorFlow核心组件中并未提供的、关于语言建模的更多功能和操作。

其中最常见的功能就是文本的词条化(tokenization)。词条化是将字符串分解为token的过程。这些token可能是单词、数字和标点符号,或是上述几种元素的组合。

TF.Text的Tokenizer使用RaggedTensors,这是一种用于识别文本的新型张量。

三个新的Tokenizer,系统解决文本AI模型预训练问题

TF.Text提供了三个新的tokenizer。其中最基本的是空白tokenizer,可以在ICU定义的空白字符(例如空格,制表符,换行符)上拆分UTF-8字符串。

tokenizer=tensorflow_text.WhitespaceTokenizer()tokens = tokenizer.tokenize(['everything not saved will be lost.', u'Sad☹'.encode('UTF-8')])print(tokens.to_list())

[['everything', 'not', 'saved', 'will', 'be', 'lost.'], ['Sadxe2x98xb9']]

此次发布的初始版本还包括一个面向unicode脚本的tokenizer,可以根据Unicode脚本边界拆分UTF-8字符串。值得注意的是,它和空白tokenizer很类似,最明显的区别在于后者可以从标准文本(如USCRIPT_LATIN,USCRIPT_CYRILLIC等)中分割出标点符号。

tokenizer = tensorflow_text.UnicodeScriptTokenizer()tokens = tokenizer.tokenize(['everything not saved will be lost.', u'Sad☹'.encode('UTF-8')])print(tokens.to_list())

[['everything', 'not', 'saved', 'will', 'be', 'lost', '.'], ['Sad', 'xe2x98xb9']]

TF.Text中提供的最后一个tokenizer是一个Wordpiece tokenizer。这是一个无监督的tokenizer,需要一个预先确定的词汇表,进一步将token分成子词(前缀和后缀)。Wordpiece常用于谷歌的BERT模型。

def_CreateTable(vocab,num_oov=1): init = tf.lookup.KeyValueTensorInitializer( vocab, tf.range(tf.size(vocab, out_type=tf.int64), dtype=tf.int64), key_dtype=tf.string, value_dtype=tf.int64) return tf.lookup.StaticVocabularyTable( init, num_oov, lookup_key_dtype=tf.string)vocab_table = _CreateTable(["great", "they", "the", "##'", "##re", "##est"])tokens = [["they're", "the", "greatest"]]tokenizer = tensorflow_text.WordpieceTokenizer( vocab_table, token_out_type=tf.string)result = tokenizer.tokenize(tokens)print(result.to_list())

[[['they', "##'", '##re'], ['the'], ['great', '##est']]]

每个Tokenizer都在UTF-8编码的字符串上进行标记,并提供了将字节偏移量转换为原始字符串的选项。调用者可以了解创建的token的原始字符串中的字节对齐。

此外,TF.Text库还包括归一化、n-gram和标记序列约束等功能。

新功能组件密集发布,TensorFlow大家庭日益完善

有关更深入的实例,可以查看Colab notebook内容,其中包含许多本文中未讨论的新的可用操作的各种代码段。未来计划继续提供更多新工具,让使用TensorFlow构建语言模型变得更加方便。

今年上半年,谷歌陆续发布了多个基于TensorFlow的新功能和新组件。5月,谷歌发布TensorFlow Graphics,让机器学习与图形和3D模型的关系更加密切。今年3月,谷歌发布旨在增强隐私保护的终端设备机器学习方法TensorFlow Federated。此外,TensorFlow框架面向JavaScript和iOS开发者的版本TensorFlow.js和TensorFlow Swift也于今年春天发布。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 谷歌
    +关注

    关注

    27

    文章

    6244

    浏览量

    110239
  • 模型
    +关注

    关注

    1

    文章

    3648

    浏览量

    51700
  • tensorflow
    +关注

    关注

    13

    文章

    331

    浏览量

    61842

原文标题:TensorFlow官宣新功能TF.Text:攻克语言AI模型预处理偏差难题

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【上海晶珩睿莓1开发板试用体验】将TensorFlow-Lite物体归类(classify)的输出图片移植到LVGL9.3界面中

    既然调通了TensorFlow-Lite物体归类(classify)和LVGL9.3代码,那么把这两个东西结合起来也是没问题的,需要注意的是,TensorFlow-Lite是C++代码,而
    发表于 09-21 00:39

    【上海晶珩睿莓1开发板试用体验】TensorFlow-Lite物体归类(classify)

    目前尚未得知睿莓1开发板上面有NPU或者DPU之类的额外处理器,因此使用树莓派系列使用最广泛的TensorFlow-Lite库进行物体归类,使用CPU运行代码,因此占用的是CPU的算力。在
    发表于 09-12 22:43

    无法将Tensorflow Lite模型转换为OpenVINO™格式怎么处理?

    Tensorflow Lite 模型转换为 OpenVINO™ 格式。 遇到的错误: FrontEnd API failed with OpConversionFailure:No translator found for TFLite_Detection_PostProcess node.
    发表于 06-25 08:27

    用树莓派搞深度学习?TensorFlow启动!

    介绍本页面将指导您在搭载64位Bullseye操作系统的RaspberryPi4上安装TensorFlowTensorFlow是一个专为深度学习开发的大型软件库,它消耗大量资源。您可以在
    的头像 发表于 03-25 09:33 959次阅读
    用树莓派搞深度学习?<b class='flag-5'>TensorFlow</b>启动!

    TensorFlow模型转换为中间表示 (IR) 时遇到不一致的形状错误怎么解决?

    使用命令转换为 Tensorflow* 模型: mo --input_model ../models/middlebury_d400.pb --input_shape [1,352,704,6
    发表于 03-07 08:20

    使用OpenVINO™ 2020.4.582将自定义TensorFlow 2模型转换为中间表示 (IR)收到错误怎么解决?

    转换自定义 TensorFlow 2 模型 mask_rcnn_inception_resnet_v2_1024x1024_coco17 要 IR 使用模型优化器命令: 注意上面的链接可能无法
    发表于 03-07 07:28

    将YOLOv4模型转换为IR的说明,无法将模型转换为TensorFlow2格式怎么解决?

    遵照 将 YOLOv4 模型转换为 IR 的 说明,但无法将模型转换为 TensorFlow2* 格式。 将 YOLOv4 darknet 转换为 Keras 模型时,收到 TypeError: buffer is too small for requested array 错误。
    发表于 03-07 07:14

    Tensorflow Efficientdet-d0模型转换为OpenVINO™ IR失败了,怎么解决?

    使用转换命令 mo --saved_model_dir /home/obs-56/effi/saved_model 将 TensorFlow* efficientdet-d0 模型转换为 IR
    发表于 03-06 08:18

    可以使用OpenVINO™工具包将中间表示 (IR) 模型转换为TensorFlow格式吗?

    无法将中间表示 (IR) 模型转换为 TensorFlow* 格式
    发表于 03-06 06:51

    使用各种TensorFlow模型运行模型优化器时遇到错误非法指令怎么解决?

    使用各种 TensorFlow 模型运行模型优化器时遇到 [i]错误非法指令
    发表于 03-05 09:56

    TensorFlow saved_model格式转换为IR遇到错误怎么解决?

    TensorFlow saved_model格式转换为 IR。 遇到错误: FrontEnd API failed with OpConversionFailure: : No translator found for TensorListFromTensor node.
    发表于 03-05 09:12

    为什么无法使用OpenVINO™模型优化器转换TensorFlow 2.4模型?

    --tensorflow_object_detection_api_pipeline_config /ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8/pipeline.config
    发表于 03-05 09:07

    OpenVINO™是否与TensorFlow集成支持Raspberry Pi?

    无法确定OpenVINO™是否与 TensorFlow* 集成支持 Raspberry Pi。
    发表于 03-05 08:26

    为什么无法将TensorFlow自定义模型转换为IR格式?

    TensorFlow* 自定义模型转换为 IR 格式: mo --data_type FP16 --saved_model_dir--input_shape (1,150,150,3
    发表于 03-05 07:26

    为什么无法将自定义EfficientDet模型从TensorFlow 2转换为中间表示(IR)?

    将自定义 EfficientDet 模型从 TensorFlow* 2 转换 为 IR 时遇到错误: [ ERROR ] Exception occurred during running replacer \"REPLACEMENT_ID\" ()
    发表于 03-05 06:29