2

我已经成功地将 TFTransformOutput 拟合到一些数据(在这种情况下,来自 UCI 的人口普查数据集在 TF 和 TFX 示例中很常见。)我尝试使用方法 transform_raw_features(raw_features) 应用转换器,但不断收到错误:

ValueError:节点 'transform/transform/inputs/workclass_copy' 的 _output_shapes 属性与输出 #0 的 GraphDef 不一致:形状必须是等位的,但为 0 和 1

深入研究源代码,似乎错误源自方法 _partially_apply_saved_transform_impl 中的 saved_transform_io,同时执行以下操作:

saver = tf_saver.import_meta_graph(meta_graph_def, import_scope=import_scope,
input_map=input_map)

我检查了由 TFX TFTransform 和 Beam 生成的 meta_graph_def,并注意到该图确实有一系列具有输入/输出等级差异的复制变量。然而,这不是我能控制的。

错误消息中的列是“workclass”,它是一个简单的分类列。我可能做错了什么?调试此问题的最佳方法是什么?在这一点上,我已经深入研究了 TF 源代码,但错误似乎源于 TFTransform 图的编写方式,不确定我必须更改/修复什么杠杆。

在此处输入图像描述

这是使用 TF Transform v0.9 和相应的 TF v1.9

回溯(最近一次通话):文件“/home/sahmed/workspace/ml_playground/TFX-TFT/trainers.py”,第 449 行,在 parse_csv 中的transformed_stuff=xformer.transform_raw_features(raw_features) 文件“/home/sahmed/miniconda3/ envs/kml2/lib/python2.7/site-packages/tensorflow_transform/output_wrapper.py”,第 122 行,在 transform_raw_features self.transform_savedmodel_dir, raw_features)) 文件“/home/sahmed/miniconda3/envs/kml2/lib/python2. 7/site-packages/tensorflow_transform/saved/saved_transform_io.py”,第 360 行,在 partial_apply_saved_transform_internal saved_model_dir、logical_input_map、tensor_replacement_map) 文件“/home/sahmed/miniconda3/envs/kml2/lib/python2.7/site-packages/tensorflow_transform /saved/saved_transform_io.py”,第 218 行,在 _partially_apply_saved_transform_impl input_map=input_map) 文件“/home/sahmed/miniconda3/envs/kml2/lib/python2.7/site-packages/tensorflow/python/training/saver.py”,第 1960 行,在 import_meta_graph **kwargs) 文件中“/home/sahmed/miniconda3/envs/kml2/lib/python2.7/site-packages/tensorflow/python/framework/meta_graph.py”,第 744 行,在 import_scoped_meta_graph producer_op_list=producer_op_list)文件“/home/sahmed/miniconda3 /envs/kml2/lib/python2.7/site-packages/tensorflow/python/util/deprecation.py”,第 432 行,在 new_func 返回 func(*args, **kwargs) 文件“/home/sahmed/miniconda3/ envs/kml2/lib/python2.7/site-packages/tensorflow/python/framework/importer.py”,第 422 行,在 import_graph_def 中引发 ValueError(str(e)) ValueError: Node 'transform/transform/inputs/workclass_copy' 的 _output_shapes 属性与输出 #0 的 GraphDef 不一致:形状必须是等阶的,但为 0 和 1

4

1 回答 1

1

问题很可能是工作类张量的形状与 transform_raw_features 的预期不兼容。

TFTransformOutput.transform_raw_features() 期望这些特征具有与提供给 tft.AnalyzeDataset() 的元数据中描述的相同的特征,类似于在此示例中的完成方式: https ://github.com/tensorflow/transform/blob/master/示例/simple_example.py#L63

您能否看一下管道中使用的元数据,看看它是否与输入 TFTransformOutput.transform_raw_features() 的数据兼容?

于 2018-10-29T19:31:24.540 回答