Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';ValueError:遇到无法由ListColumnRepresentation解码的SparSetEnsorval';使用Tensorflow变换/梁时_Python_Tensorflow_Apache Beam_Tensorflow Transform - Fatal编程技术网

Python ';ValueError:遇到无法由ListColumnRepresentation解码的SparSetEnsorval';使用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

我正在运行tensorflow变换/梁管道以加载/预处理并另存为TFRecords。然后加载这些记录。在Tensorflow变换的预处理过程中,我想填充一个稀疏张量。因此,我想将其转换为稠密,填充并转换回稀疏。
代码看起来有点像这样:

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”时]

有人对这段代码有什么建议,或者对我遗漏的内容有什么提示吗? 非常感谢您的帮助

最好的,
Dominik

tf.Transform支持参差不齐的稀疏张量,因此输入和输出的每一行都应该左对齐