Как я могу использовать переменную анализатора tf.Transform в preprocessing_fn моего конвейера TFX?
Я использую функцию tft.max для вычисления максимального значения для всего набора данных, который определяется как анализатор от просмотра исходного кода. Я хочу использовать результат этого анализатора в следующем вызове функции, но получаю следующую ошибку:
Функция преобразования
def preprocessing_fn(inputs):
outputs = {}
max_length = tft.max(inputs['MFCC_frame_count'], reduce_instance_dims=True)
outputs['MFCC_data'] = tft.sparse_tensor_to_dense_with_shape(
inputs['MFCC_data'],
[max_length, 26],
default_value=0
)
return outputs
Ошибка
TypeError: Dimension value must be integer or None or have an __index__ method, got <tf.Tensor 'max/min_and_max/Placeholder_1:0' shape=() dtype=int64>
Как я могу использовать это значение? Я пробовал несколько разных способов использовать это значение, но, похоже, ничего не работает.
Наши данные
context {
feature {
key: "MFCC_data"
value {
float_list {
value: 6.972537994384766
value: -24.602876663208008
value: -18.28076934814453
...
}
}
}
feature {
key: "MFCC_frame_count"
value {
int64_list {
value: 316
}
}
}
...
}
В нашем интерактивном конвейере
transform = Transform(
examples=example_gen.outputs['examples'],
schema=schema_gen.outputs['schema'],
module_file='transform.py')
context.run(transform)
Соответствующие версии
Python 3.7.3
tfx==0.15.0
tensorflow==2.1.0
tensorflow-transform==0.15.0