首页 > 解决方案 > 无法在 Amazon SageMaker 上开始训练

问题描述

def input_csv_fn():
    #filenames = np.load(file_io.FileIO(npy_file, 'r'))
    Dataset = tf.data.TextLineDataset(csv_file).skip(1).shuffle(buffer_size = 2000000).map(parser_csv, num_parallel_calls = cpu_count())
    #Dataset = Dataset.prefetch(2560)
    #Dataset = Dataset.shuffle(buffer_size = 1280)
    Dataset = Dataset.map(input_parser_plain, num_parallel_calls = cpu_count())
    Dataset = Dataset.apply(tf.contrib.data.ignore_errors())
    Dataset = Dataset.repeat(epochs)
    Dataset = Dataset.batch(batch_size)
    Dataset = Dataset.prefetch(batch_size)
    iterator = Dataset.make_one_shot_iterator()
    feats, labs = iterator.get_next()
    return feats, labs
def aggregate_csv_batches():
    features = []
    labels = []
    # add if GPU exists condition here to fit GPU and CPU data processing
    if num_gpus > 0:
        num_devices = num_gpus
    else:
        num_devices = 1
    for i in range(num_devices):
        _features, _labels = input_csv_fn()
        features.append(_features)
        labels.append(_labels)
    return features, labels
return aggregate_csv_batches 

以上是通过 CSV 从 S3 存储桶读取数据集的代码,但是当我尝试这样做时,我在 AWS Sagemaker 上创建训练作业时不断收到以下错误

TypeError:无法将类型对象转换<type 'function'>为张量。内容:0x7f1559eeaaa0 处的函数 aggregate_csv_batches。考虑将元素转换为支持的类型。

标签: pythonamazon-web-servicesamazon-sagemaker

解决方案


没有更多细节很难确定问题所在。您是否在训练作业中使用 SageMaker Tensorflow 图像运行此代码?如果是这样,您是否阅读过这里的文档?https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/tensorflow/README.rst

仅从错误消息来看,您似乎正在将函数本身(aggregate_csv_batches)传递到需要张量的地方。

如果您可以提供您正在运行的完整代码以及您如何运行它的描述,或者更好的是最小的重现案例,我可以尝试进一步提供帮助。


推荐阅读