Я пытаюсь выяснить, как извлечь последовательные патчи из сложного многозначного тензора, где длина является переменной. Извлечение выполняется как часть конвейера tf.data
.
Если бы тензор не был сложным, я бы использовал tf.image.extract_image_patches
, как в этом ответе .
Однако эта функция не работает со сложными тензорами. Я попробовал следующую технику, но она не работает, потому что длина тензора неизвестна.
def extract_sequential_patches(image):
image_length = tf.shape(image)[0]
num_patches = image_length // (128 // 4)
patches = []
for i in range(num_patches):
start = i * 128
end = start + 128
patches.append(image[start:end, ...])
return tf.stack(patches)
Однако я получаю ошибку:
InaccessibleTensorError: The tensor 'Tensor("strided_slice:0", shape=(None, 512, 2), dtype=complex64)' cannot be accessed here: it is defined in another function or code block. Use return values, explicit Python locals or TensorFlow collections to access it. Defined in: FuncGraph(name=while_body_2100, id=140313967335120)
Я пробовал либеральное оформление с помощью @tf.function