Python ';ValueError:遇到无法由ListColumnRepresentation解码的SparSetEnsorval';使用Tensorflow变换/梁时
我正在运行tensorflow变换/梁管道以加载/预处理并另存为TFRecords。然后加载这些记录。在Tensorflow变换的预处理过程中,我想填充一个稀疏张量。因此,我想将其转换为稠密,填充并转换回稀疏。Python ';ValueError:遇到无法由ListColumnRepresentation解码的SparSetEnsorval';使用Tensorflow变换/梁时,python,tensorflow,apache-beam,tensorflow-transform,Python,Tensorflow,Apache Beam,Tensorflow Transform,我正在运行tensorflow变换/梁管道以加载/预处理并另存为TFRecords。然后加载这些记录。在Tensorflow变换的预处理过程中,我想填充一个稀疏张量。因此,我想将其转换为稠密,填充并转换回稀疏。 代码看起来有点像这样: import tensorflow_transform as tft import tensorflow as tf #... def preprocess_fn(input_features): output_features = {} out
代码看起来有点像这样:
import tensorflow_transform as tft
import tensorflow as tf
#...
def preprocess_fn(input_features):
output_features = {}
output_features[CATEGORICAL_FEATURE_NAMES] = tft.compute_and_apply_vocabulary(...)
#dense = tf.sparse.to_dense(output_features[CATEGORICAL_FEATURE_NAMES])
## do something with dense
#output_features[CATEGORICAL_FEATURE_NAMES] = tf.contrib.layers.dense_to_sparse(dense)
return output_features
要加载TFR记录,我使用以下函数:
def tfrecords_input_fn(files_name_pattern, transformed_metadata,
mode=tf.estimator.ModeKeys.EVAL,
num_epochs=1,
batch_size=64):
dataset = tf.data.experimental.make_batched_features_dataset(
file_pattern=files_name_pattern,
batch_size=batch_size,
features=transformed_metadata.schema.as_feature_spec(),
reader=tf.data.TFRecordDataset,
num_epochs=num_epochs,
shuffle=True if mode == tf.estimator.ModeKeys.TRAIN else False,
shuffle_buffer_size=1 + (batch_size * 2),
prefetch_buffer_size=1,
drop_final_batch=True
)
iterator = dataset.make_one_shot_iterator()
features = iterator.get_next()
target = features.pop(TARGET_FEATURE_NAME)
return features, target
运行整个管道(加载原始数据、转换、保存TF记录,然后加载这些记录以将其打印到屏幕上)可以正常工作,但取消“preprocess_fn”中的两行注释会导致以下错误:
文件“../lib/python3.6/site packages/tensorflow_transform/impl_helper.py”,第262行,在to_instance_dicts中
raise VALUE ERROR('遇到无法访问的SparseTensorValue'
ValueError:遇到无法由ListColumnRepresentation解码的SparSetEnSaveValue
ValueError:遇到无法由ListColumnRepresentation解码的SparseTensorValue。[在运行“%s-Transform/ConvertAndUnbatch”时]
有人对这段代码有什么建议,或者对我遗漏的内容有什么提示吗?
非常感谢您的帮助
最好的,
Dominiktf.Transform支持参差不齐的稀疏张量,因此输入和输出的每一行都应该左对齐