如何在我的 TFX 管道的 preprocessing_fn 中使用 tf.Transform 分析器变量?
我正在使用 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