Python TensorFlow中的合并字符串张量

Python TensorFlow中的合并字符串张量,python,string,concatenation,tensorflow,Python,String,Concatenation,Tensorflow,我处理大量的dtype=“str”数据。我一直在尝试构建一个简单的图形,如中所示 对于一个简单的操作,我想使用() 有人知道如何合并字符串张量吗? import tensorflow as tf sess = tf.InteractiveSession() with tf.name_scope("StringSequence") as scope: left = tf.constant("aaa",name="LEFT") middle = tf.placeholder(dty

我处理大量的
dtype=“str”
数据。我一直在尝试构建一个简单的图形,如中所示

对于一个简单的操作,我想使用()

有人知道如何合并字符串张量吗?

import tensorflow as tf
sess = tf.InteractiveSession()

with tf.name_scope("StringSequence") as scope:
    left = tf.constant("aaa",name="LEFT")
    middle = tf.placeholder(dtype=tf.string, name="MIDDLE")
    right = tf.constant("ccc",name="RIGHT")
    complete = tf.add_n([left,middle,right],name="COMPLETE") #fails here
sess.run(complete,feed_dict={middle:"BBB"})
#writer = tf.train.SummaryWriter("/users/mu/test_out/", sess.graph_def)

我相信稀疏混凝土是您想要的:


加法将把数值加在一起。

好的,目前没有办法做到这一点


认识到这是一个令人失望的答案,我已经提交了跟踪此请求的文件。

我知道这不是一个立即的答案,我不希望这一点在评论中被隐藏

如果要合并现有库中未包含的操作,可以创建一个。要合并自定义Op,您需要:

    在C++文件中登记新的OP。Op注册独立于实现,并描述如何调用Op的语义。例如,它定义Op名称,并指定其输入和输出
  • 在C++中实现OP。这种实现称为“内核”,对于不同的体系结构(例如CPU、GPU)或输入/输出类型,可以有多个内核
  • 创建Python包装器。此包装器是用于创建Op的公共API。默认包装器是从Op注册生成的,可以直接使用或添加到
  • (可选)编写一个函数来计算Op的渐变
  • 或者,编写一个函数来描述Op的输入和输出形状。这允许形状推断与Op一起工作
  • 测试Op,通常使用Python。如果定义渐变,可以使用Python GradientChecker对其进行验证

您所问的是否非常相关,并且可能会成为未来使用TensorFlow的字符串类型的更高谷歌搜索结果之一;因此,需要提供这种解决方案的途径,以便其他人知道它的存在

由于您的问题,我们优先考虑在TensorFlow中添加对字符串连接的支持,并在中添加了它。使用现有运算符实现字符串连接,以匹配的行为(包括广播)

要实现您的示例,您可以编写:

complete = left + middle + right
…或,等效,但如果要命名结果张量:

complete = tf.add(tf.add(left, middle), right, name="COMPLETE")
我们还没有在<代码> tf.AddixNo()>代码>中添加对字符串的支持(或相关的OPS,如:代码> TF.TrimeEx SUME()/代码>,但是如果有用例的话,会考虑这个问题。


注意:要立即使用此功能,您需要。新op将在TensorFlow(0.7.0)的下一版本中提供。

op可以添加新op吗?是的,这是一种方法。我们欢迎一个贡献——这显然是多人想要的东西。我很想,但这将不会有几个月,因为我仍然需要通过基本的TysFooFoad实例,GPU例子,然后让我的C++加速。我目前正在翻译成F#以利用我的F#知识学习深度学习和Python。但现在你确认我开始掌握TensorFlow,我会把它放在列表的首位。谢谢.dga关于@Ian Goodfello的回答,有没有办法用稀疏的concat做到这一点?我不这么认为。稀疏张量的元素仍然是单独的字符串,并且没有办法连接字符串对象本身。你找到一种方法让它工作了吗?应用这个有点混乱。