Я хотел бы прочитать последовательность временных рядов, сохраненную в формате tfrecord.Каждый временной ряд имеет разную длину.Чего я хочу добиться, так это разбить длинный тензор на партии меньших тензоров требуемой длины.Это очень легко сделать с массивами numpy, и это будет выглядеть так:
length = 200
for begin in range(tensor_size-length):
tensor_slice = tf.slice(my_tensor, begin, length)
my_slices.append(tensor_slice)
В такой функции моя проблема заключается в следующем: как получить размер тензора, чтобы можно было использовать цикл?Ниже приведена часть кода, где пример читается и декодируется.
file_queue = tf.train.string_input_producer(tf_files, num_epochs=num_epochs)
reader = tf.TFRecordReader()
_, serialized_records = reader.read(file_queue)
feature_map = {
"speed":tf.FixedLenSequenceFeature([], tf.float32, allow_missing=True),
"battery":tf.FixedLenSequenceFeature([], tf.float32, allow_missing=True)
}
features = tf.parse_single_example(serialized_records, feature_map)
speed = tf.cast(features['speed'], tf.float32)
battery = tf.cast(features['battery'], tf.float32)
speeds = []
batteries = []
#SPLIT TENSOR INTO SMALLER TENSORS
features = tf.train.shuffle_batch([speeds, batteries],
batch_size=batch_size,
capacity=5000,
num_threads=4,
min_after_dequeue=1)
return features