1

如何在我的 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
4

0 回答 0