Когда я читаю файл с tf.read_file
, я получаю что-то с типом tf.string
. Документация говорит только о том, что это "массивы байтов переменной длины. Каждый элемент тензора представляет собой массив байтов". (https://www.tensorflow.org/versions/r0.10/resources/dims_types.html). Я не знаю, как это интерпретировать.
Я ничего не могу сделать с этим типом. В обычном python вы можете получить элементы по индексу, например my_string[:4]
, но когда я запускаю следующий код, я получаю сообщение об ошибке.
import tensorflow as tf
import numpy as np
x = tf.constant("This is string")
y = x[:4]
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
result = sess.run(y)
print result
В нем говорится
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_shape.py", line 621, in assert_has_rank raise ValueError("Shape %s must have rank %d" % (self, rank)) ValueError: Shape () must have rank 1
Также я не могу преобразовать свою строку в тензор tf.float32
. Это файл .flo
и имеет магический заголовок "PIEH". Этот numpy-код успешно преобразует такой заголовок в число (см. Пример здесь qaru.site/info/558426/...), но я не могу сделать это с помощью метода tensorflow. Я пробовал tf.string_to_number(string, out_type=tf.float32)
, но он говорит
tensorflow.python.framework.errors.InvalidArgumentError: StringToNumberOp could not correctly convert string: PIEH
Итак, какая строка? Что это за форма? Как я могу хотя бы получить часть строки? Я полагаю, что, если я смогу получить часть этого, я могу просто пропустить часть "PIEH".
UPD. Я забыл сказать, что tf.slice(string, [0], [4])
также не работает с той же ошибкой.