如何为AWS SageMaker线性学习器解析io.BytesIO?

时间:2018-12-30 05:29:27

标签: python amazon-web-services aws-sdk amazon-sagemaker bytesio

我正在通过转换为缓冲区类型为线性学习者准备数据,如本示例MNIST Linear Learner

buf = io.BytesIO
smac.write_numpy_to_dense_tensor(buf, features_train, target_train)
buf.seek(0)
print(buf)
boto3.resource('s3').Bucket(bucket).Object(os.path.join(prefix, 
                                           train_location)).upload_fileobj(buf)

但是,当我尝试将转换后的数据上传到S3时,出现以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-54-4ffe1a2f757c> in <module>()
      4 import boto3
      5 import os
----> 6 upload_train_data_to_s3(features_train, target_train, prefix, bucket)

<ipython-input-53-cb779ecf0f0a> in upload_train_data_to_s3(features_train, target_train, prefix, bucket, train_location, val_location)
      3     """Upload training and validation set to S3"""
      4     buf = io.BytesIO
----> 5     smac.write_numpy_to_dense_tensor(buf, features_train, target_train)
      6     buf.seek(0)
      7     print(buf)

~/anaconda3/envs/python3/lib/python3.6/site-packages/sagemaker/amazon/common.py in write_numpy_to_dense_tensor(file, array, labels)
    108         if labels is not None:
    109             _write_label_tensor(resolved_label_type, record, labels[index])
--> 110         _write_recordio(file, record.SerializeToString())
    111 
    112 

~/anaconda3/envs/python3/lib/python3.6/site-packages/sagemaker/amazon/common.py in _write_recordio(f, data)
    177     """Writes a single data point as a RecordIO record to the given file."""
    178     length = len(data)
--> 179     f.write(struct.pack('I', _kmagic))
    180     f.write(struct.pack('I', length))
    181     pad = (((length + 3) >> 2) << 2) - length

TypeError: descriptor 'write' requires a '_io.BytesIO' object but received a 'bytes'

我遵循与示例相同的步骤,包括将类型转换为float32,但是没有运气。感谢您为解决此问题所提供的帮助。

0 个答案:

没有答案