深度学习 - 22.TF TF1.x tf.string_split VS TF2.x tf.strings.split
一.引言
开发时同时用到了TF1与TF2,使用中发现 split 函数在V1和V2中有一些区别,记录一下。
二.TF1.x tf.string_split
1.使用
Input: 对字符串数组进行分割,默认分隔符为" ",skip_empty代表是否忽略空字符创
Output: 返回一个SparseTensor
def string_split(source, delimiter=" ", skip_empty=True):delimiter = ops.convert_to_tensor(delimiter, dtype=dtypes.string)source = ops.convert_to_tensor(source, dtype=dtypes.string)indices, values, shape = gen_string_ops.string_split(source, delimiter=delimiter, skip_empty=skip_empty)indices.set_shape([None, 2])values.set_shape([None])shape.set_shape([2])return sparse_tensor.SparseTensor(indices, values, shape)
2.示例
输入 source=[['hello world], ['a b c']] 是二维数组
输出 SparseTensor(indices = [0,0; 0,1;1,0;1,1;,1,2], values=['hello', 'world', 'a', 'b', 'c'], shape=[2,3])
关于SparseTensor相关知识可以参考: SparseTensor 与 Lookup
For example:N = 2, source[0] is 'hello world' and source[1] is 'a b c', then the outputwill best.indices = [0, 0;0, 1;1, 0;1, 1;1, 2]st.shape = [2, 3]st.values = ['hello', 'world', 'a', 'b', 'c']
三.TF2.x tf.strings.split
1.使用
Input: 对字符串,字符串数组进行分割,增加了 maxsplit 参数
Output: 返回 RaggedTensor
def string_split_v2(input, sep=None, maxsplit=-1, name=None):with ops.name_scope(name, "StringSplit", [input]):input = ragged_tensor.convert_to_tensor_or_ragged_tensor(input, dtype=dtypes.string, name="input")if isinstance(input, ragged_tensor.RaggedTensor):return input.with_flat_values(string_split_v2(input.flat_values, sep, maxsplit))rank = input.shape.ndimsif rank == 0:return string_split_v2(array_ops.stack([input]), sep, maxsplit)[0]elif rank == 1 or rank is None:sparse_result = string_ops.string_split_v2(input, sep=sep, maxsplit=maxsplit)return ragged_tensor.RaggedTensor.from_value_rowids(values=sparse_result.values,value_rowids=sparse_result.indices[:, 0],nrows=sparse_result.dense_shape[0],validate=False)else:return string_split_v2(ragged_tensor.RaggedTensor.from_tensor(input), sep, maxsplit)
2.示例
A. 分割字符
输入 string = ["a b c"]
输出 常规 Tensor
tf.Tensor([b'a' b'b' b'c'], shape=(3,), dtype=string)
B. 分割字符数组
输入 text = ["123/bbbb/cba", "456/cccc/abc"]
返回 tf.RaggedTensor,shape 为(2, None),values 为常规 Tensor,可以视作Flatten
<tf.RaggedTensor [[b'123', b'bbbb', b'cba'], [b'456', b'cccc', b'abc']]>
shape=(2, None)
values=tf.Tensor([b'123' b'bbbb' b'cba' b'456' b'cccc' b'abc'], shape=(6,), dtype=string)
四.tf.string_split 与 tf.strings.split 异同
1.相同点
对字符进行分割
2.不同点
V1-tf.string_split | V2-tf.strings.split | |
输入 | 字符串数组,单字符也需要[string] | 字符串 or 字符串数组 |
返回类型 | SparseTensor 稀疏张量 | RaggedTensor 不规则张量 |
返回形状 | 按分割最长的字符补充 | 只保留数组长度(len, None) |
更多推荐算法相关深度学习:深度学习导读专栏
深度学习 - 22.TF TF1.x tf.string_split VS TF2.x tf.strings.split相关推荐
- 深度学习总结:tensorflow和pytorch关于RNN的对比,tf.nn.dynamic_rnn,nn.LSTM
tensorflow和pytorch关于RNN的对比: tf.nn.dynamic_rnn很难理解,他的意思只是用数据走一遍你搭建的RNN网络. 可以明显看出pytorch封装更高,更容易理解,动态图 ...
- 新手入门深度学习 | 2-2:结构化数据建模流程示例
文章目录 一.准备数据 二.定义模型 三.训练模型 四.评估模型 五.使用模型 六.保存模型 1. 保存整个模型 2. 保存模型权重
- Python 机器学习/深度学习/算法专栏 - 导读目录
目录 一.简介 二.机器学习 三.深度学习 四.数据结构与算法 五.日常工具 一.简介 Python 机器学习.深度学习.算法主要是博主从研究生到工作期间接触的一些机器学习.深度学习以及一些算法的实现 ...
- 深度学习-循环神经网络(RNN)
作者: 明天依旧可好 QQ交流群: 807041986 注:关于深度学习的相关问题,若本文未涉及可在下方留言告诉我,我会在文章中进行补充的. 原文链接:https://mtyjkh.blog.csdn ...
- 深度学习模型部署浅析
关于模型部署可能有很多种概念或者解释. 根据看的一些文献和接触的一些开源工具,进行梳理. 模型部署说到底,就是通信传输,以及平台存储打通,以及任务的定时工作(定时工作可能偏向于调度了). 1. 模型部 ...
- 深度学习原理——41
简单的理解就是,logits和probs的区别 logits就是没有经过softmax的输出: probs是logits经过softmax的输出. [1](10条消息) 深度学习中的 logits . ...
- 深度学习-20:神经科学、脑科学和稀疏特性
深度学习-20:神经科学.脑科学和稀疏特性 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 第二次世界大战之后,美苏在全维度展开了霸权竞赛,人工智能研究伴随着计算机的发展也开始进入佳 ...
- 【深度学习】(4) 梯度下降、损失函数
各位同学好,今天和大家介绍一下TensorFlow2.0中的梯度下降.激活函数及其梯度.损失函数及其梯度. (1) 梯度计算:GradientTape(),tape.watch(),tape.grad ...
- TF2.0深度学习实战(一):分类问题之手写数字识别
前言: 本专栏将分享从零开始搭建神经网络的学习过程,力争打造最易上手的小白教程.在这过程中,我将使用谷歌TensorFlow2 框架逐一复现经典的卷积神经网络:LeNet-5.AlexNet.VGG系 ...
最新文章
- Hibernate二级缓存详解
- C语言项目--教师信息/学生成绩管理系统
- ubuntu系统安装和配置
- Codeforces 997D Cycles in Product (点分治、DP计数)
- 暑期训练日志----2018.8.17
- centeros7安装mysql
- 把这个写成一个类吧TREEVIEW
- Load Balance System
- 20155322 《Java程序设计》课堂实践项目 数据库-3-4
- Codeforces Round #295 (Div. 1) C. Pluses everywhere
- Java JDK 配置环境变量
- JAVA中字符串函数subString的用法小结
- Xamarin.Forms 解决ListView高度问题
- 萤石云视频PC客户端v2.6.14.0官方最新版
- CHD搭建的环境中,解决用户权限的问题
- 出现Avoid mutating a prop directly since the value will错误 已解决
- 大话云原生数据库中的存算分离
- python写文字冒险游戏手机版_用128行代码实现一个文字冒险游戏
- Oracle函数——比较函数
- HNUST 1231 趣味程序设计_猜牌术(-)
热门文章
- java实现全局键盘监听
- Asterisk中meetme会议功能报错
- win10出现一个mysql账户密码错误_Windows 10 访问网络共享 总是提示用户名或密码不正确的解决方法...
- 侧边栏php,侧边栏可伸缩效果
- 美股市场如何讲好一个故事?
- The user specified as a definer does not exist
- 12个球问题(不知轻重)
- charm-crypto安装(一)
- 【node进阶】深入浅出websocket即时通讯(一)
- 安装Apache详细步骤 (绿色版Apache的安装)自己安装过程中整理