我有一个弦的张量。下面是一些示例字符串
com.abc.display,com.abc.backend,com.xyz.forte,blah
com.pqr,npr.goog
我想做一些预处理,将CSV拆分成它的一部分,然后在点处拆分每个部分,然后创建多个字符串,其中一个字符串是另一个字符串的前缀。此外,必须删除所有blah
例如,给定第一个字符串com.abc.display,com.abc.backend,com.xyz.forte
,它将转换为以下字符串的数组/列表
['com', 'com.abc', 'com.abc.display', 'com.abc.backend', 'com.xyz', 'com.xyz.forte']
结果列表没有重复项(这就是为什么com.abc.backend
的前缀字符串没有显示为已包含的字符串-com
和com.abc
)
我编写了下面的python函数,在给定一个CSV字符串示例的情况下可以实现上述功能
def expand_meta(meta):
expanded_subparts = []
meta_parts = set([x for x in meta.split(',') if x != 'blah'])
for part in meta_parts:
subparts = part.split('.')
for i in range(len(subparts)+1):
expanded = '.'.join(subparts[:i])
if expanded:
expanded_subparts.append(expanded)
return list(set(expanded_subparts))
在第一个示例中调用此方法
expand_meta('com.abc.display,com.abc.backend,com.xyz.forte,blah')
返回
['com.abc.display',
'com.abc',
'com.xyz',
'com.xyz.forte',
'com.abc.backend',
'com']
我知道tensorflow有这个方法。我希望用它来变换张量的每个元素。但是,我得到了以下错误
File "mypreprocess.py", line 152, in expand_meta
meta_parts = set([x for x in meta.split(',') if x != 'blah'])
AttributeError: 'Tensor' object has no attribute 'split'
因此,我似乎无法使用带有map_fn
的常规python函数,因为它期望元素为tensor
。我该怎么做我想在这里做的事
(我的Tensorflow
版本是1.11.0)
我想这正是你想要的:
我不确定您是否希望总结果像那样串联起来,或者您希望将
tf.unique
应用于全局结果,但在任何情况下,想法都是一样的相关问题 更多 >
编程相关推荐