首页 > 解决方案 > Tensorflow Estimator 错误:释放对象的校验和不正确 - 对象在被释放后可能被修改

问题描述

我正在训练一个 TF Boosted Trees 估计器,这给了我一个错误:

incorrect checksum for freed object - object was probably modified after being freed.

在 CloudML 上,我得到:

Command '['python', '-m', u'trainer.model', u'--job-type', u'remote', '--job-dir', u'gs://xxx']' died with signal 7.

经过约 1 小时的训练。我在 CPU 上训练。这表明存在内存泄漏,但我只使用 TF 代码,所以我不确定出了什么问题。

我的代码如下:

def build_training_input_fn():

    def parse_record(record):

        transformed_feature_spec = transformed_metadata.schema.as_feature_spec()

        transformed_features = tf.parse_single_example(record, transformed_feature_spec)
        cols_to_remove = []
        transformed_labels = transformed_features.pop(LABEL_KEY)
        transformed_features = {key: value for (key, value) in transformed_features.items() if
                            key not in cols_to_remove}
        return transformed_features, transformed_labels

    def input_fn(file_pattern):
        files = tf.data.Dataset.list_files(file_pattern=file_pattern) 
        files.apply(
        tf.data.experimental.parallel_interleave(
            lambda filename: tf.data.TFRecordDataset(filename),
            cycle_length=32,
            block_length=1,
            sloppy=True,
        ))
        dataset = dataset.apply(tf.data.experimental.map_and_batch(
        map_func=parse_record, batch_size=BATCH_SIZE, drop_remainder=False,
        num_parallel_batches=1))

        return dataset

return input_fn

classifier = tf.estimator.BoostedTreesClassifier()
input_fn_train = build_training_input_fn()
classifier.train(input_fn=input_fn_train)

我正在阅读 Apache Beam 创建的 TF 记录。

我不确定怎么会出现这样的错误,我知道 TF 记录中的数据很好,我可以使用相同的集合训练 XGB/Catboost。

任何人都可以帮忙吗?

标签: tensorflowtensorflow-datasetstensorflow-estimator

解决方案


推荐阅读