Я реализую регрессионную сеть, отображающую изображения в позы, используя API Tensorflow/python и пытаюсь обработать вывод FixedLengthRecordReader.slicing Tensorflow FixedLengthRecordReader value
Я пытаюсь адаптировать cifar10 example минимально для моих целей.
Пример cifar10 считывает необработанные байты, декодирует, а затем разбивает.
result.key, value = reader.read(filename_queue)
# Convert from a string to a vector of uint8 that is record_bytes long.
record_bytes = tf.decode_raw(value, tf.uint8)
# The first bytes represent the label, which we convert from uint8->int32.
result.label = tf.cast(
tf.slice(record_bytes, [0], [label_bytes]), tf.int32)
# The remaining bytes after the label represent the image, which we reshape
# from [depth * height * width] to [depth, height, width].
depth_major = tf.reshape(tf.slice(record_bytes, [label_bytes], [image_bytes]),
[result.depth, result.height, result.width])
# Convert from [depth, height, width] to [height, width, depth].
result.uint8image = tf.transpose(depth_major, [1, 2, 0])
Читаю из списка двоичных файлов с данными, сохраненными в виде (pose_data, image_data). Поскольку мои данные по положению - float32, а мои данные изображения - uint8, я хочу сначала нарезать, а затем наложить. К сожалению, результат value reader.read - это нулевой размерный тензор, поэтому нарезка не работает.
key, value = reader.read(filename_queue)
print value.dtype
print value.get_shape()
<dtype: 'string'>
()
В результате tf.decode_raw (значение, DTYPE) представляет собой 1-мерный массив, но требует, чтобы DTYPE быть указан, и tf.string не является допустимым типом, который он принимает.
Можно ли разрезать перед декодированием? Или мне нужно декодировать -> case back to string -> slice -> recast? Есть ли другой способ?
ссылка сломана, я хотел бы увидеть пример, если можно вставить здесь. – Bastiaan