我处理了大量dtype="str"
数据。我一直在尝试像https://www.tensorflow.org/versions/master/api_docs/python/train.html#SummaryWriter中那样构建一个简单的图形。
对于一个简单的操作,我想使用placeholder
将字符串连接在一起,如(How to feed a placeholder?)
有谁知道如何将字符串张量合并在一起?
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)
答案 0 :(得分:17)
感谢您的问题,我们优先在TensorFlow中添加对字符串连接的支持,并将其添加到this commit中。字符串连接使用现有的tf.add()
运算符实现,以匹配NumPy's add
operator的行为(包括广播)。
要实现您的示例,您可以写:
complete = left + middle + right
...或者等效地,但是如果你想命名结果张量:
complete = tf.add(tf.add(left, middle), right, name="COMPLETE")
我们尚未在tf.add_n()
(或tf.reduce_sum()
之类的相关操作)中添加对字符串的支持,但如果有用例,则会考虑这一点。
注意:要立即使用此功能,您需要build TensorFlow from source。新的操作系统将在下一版TensorFlow(0.7.0)中提供。
答案 1 :(得分:3)
我相信你正在寻找sparse_concat op: https://www.tensorflow.org/versions/master/api_docs/python/sparse_ops.html#sparse_concat
add_n将一起添加数值。
答案 2 :(得分:3)
我知道这不是一个直接的答案,并且不希望这些隐藏在评论中。
如果您想要合并现有库未涵盖的操作,则可以创建custom Op。要合并您的自定义操作,您需要:
您提出的问题是否非常相关,并且可能会成为将来使用字符串类型与TensorFlow的较高Google搜索结果之一;因此,这种解决方案的途径需要提供,以便其他人意识到存在。
答案 3 :(得分:2)
目前还没有办法做到这一点,AFAIK。
我认为这是一个令人失望的答案,我已提交issue #701 on GitHub来跟踪此请求。