【问题标题】:Sagemaker From RecordIO To Sparse MatrixSagemaker 从 RecordIO 到稀疏矩阵
【发布时间】:2020-01-08 19:24:48
【问题描述】:

在为 Sagemaker 的因式分解机实施准备数据以进行训练时,我成功地使用函数 write_spmatrix_to_sparse_tensor (source code) 将我的数据从稀疏矩阵转换为 Sagemaker 的因式分解机实施所需的记录格式。

我将导入语句限制为提供的函数的示例:

import os
import io
import boto3
import sagemaker.amazon.common as smac

def write_recordio(array, y, prefix, f):
    # Convert to record protobuf
    buf = io.BytesIO()
    smac.write_spmatrix_to_sparse_tensor(array=array, file=buf, labels=y)
    buf.seek(0)

    fname = os.path.join(prefix, f)
    boto3.Session().resource('s3').Bucket('bucket_name').Object(fname).upload_fileobj(buf)

参数array 的示例 sn-p 是特征:

   (0, 990290)  1.0
   (0, 1266265) 1.0
   (1, 560338)  1.0
   (1, 1266181) 1.0
   (2, 182872)  1.0
   (2, 1266205) 1.0
   ...

我的目标是 y 的示例格式:

[1. 1. 1. ... 3. 1. 5.]

write_spmatrix_to_sparse_tensor 使用上述功能和输入按预期工作。训练完我的模型后,我使用 Sagemaker 的 Batch Transform 接收带有许多 <class 'record_pb2.Record'> 类型输出的 .out 文件

例子:

来自write_spmatrix_to_sparse_tensor 输出的一条记录:

features {
  key: "values"
  value {
    float32_tensor {
      values: 1.0
      values: 1.0
      keys: 990290
      keys: 1266265
      shape: 1266394
    }
  }
}
label {
  key: "values"
  value {
    float32_tensor {
      values: 1.0
    }
  }
}

批量转换输出 (.out) 文件中的一条记录,其中许多记录存在):

label {
  key: "score"
  value {
    float32_tensor {
      values: 1.5246734619140625
    }
  }
}

所以现在我有一个最初使用 write_spmatrix_to_sparse_tensor 编写的文件和来自 transformer.transform 的输出,我想从这些文件中恢复我原来的稀疏矩阵格式。本质上,如果函数write_sparse_tensor_to_spmatrix 存在,它会是什么样子?

【问题讨论】:

    标签: python numpy amazon-sagemaker


    【解决方案1】:

    一定有更好的方法。但我学到的是从输出文件中读取值。更改数据类型并将它们改造成适当的格式。读取值示例

    data.label['score'].float32_tensor.values
    

    这里的data 是您输出文件中的一条记录。结果的类型是“google.protobuf.pyext._message.RepeatedScalarContainer”,但您可以将其转换为 Python 列表或 NumPy 数组或任何适合您模型的数据类型。

    【讨论】:

      猜你喜欢
      • 2012-01-10
      • 2018-01-19
      • 2017-03-31
      • 2012-06-20
      • 2017-03-26
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 2013-11-13
      相关资源
      最近更新 更多