2016-07-05 9 views

ответ

1

Это работает для меня:

x = tf.constant("Hello everyone") 

# Launch the default graph. 
with tf.Session() as sess: 
    print(tf.size(tf.string_split([x],"")).eval()) 
1

Нет такой функции, как версия TensorFlow версии 0.9. Однако вы можете использовать tf.py_func для выполнения произвольных функций Python над тензорами TensorFlow. Вот один из способов, чтобы получить длину строки TensorFlow:

def string_length(t): 
    return tf.py_func(lambda p: [len(x) for x in p], [t], [tf.int64])[0] 

a = tf.constant(["Hello everyone"], tf.string) 
sess = tf.InteractiveSession() 
sess.run(string_length(a)) 
+0

Спасибо за ваш ответ. Это было большое обходное решение в то время, когда я задал этот вопрос. Теперь, с 'tf.string_split', длина строки может быть рассчитана непосредственно в TensorFlow. – Ata

0

Другого неоптимальным вариантом для преобразования строки в разреженный:

strings = ['Why hello','world','!'] 
chars = tf.string_split(strings,"") 

Затем рассчитать максимальный индекс в каждой строке +1

line_number = chars.indices[:,0] 
line_position = chars.indices[:,1] 
lengths = tf.segment_max(data = line_position, 
         segment_ids = line_number) + 1 

with tf.Session() as sess: 
    print(lengths.eval()) 

[9 5 1] 
Смежные вопросы