我正在尝试使用线性学习器算法为 Sagemaker 构建一个训练集。该算法支持记录IO包装的protobuf和csv作为训练数据的格式。由于训练数据是使用 Spark 生成的,因此我在从数据帧生成 csv 文件时遇到了问题(现在这似乎坏了(,所以我正在尝试使用 protobuf。
我设法使用 Protostuff 为训练数据集创建了一个二进制文件,这是一个允许从 POJO 对象生成 protobuf 消息的库。问题是在触发训练作业时,我从 SageMaker 收到该消息: 客户端错误:未处理训练数据。训练通道为空或小批量大小过高。验证训练数据是否包含非空文件,并且小批量大小小于每个训练主机的记录数。
训练文件当然不是空的。我怀疑我生成训练数据的方式不正确,因为我能够使用 libsvm 格式训练模型。有没有办法使用 Sagemaker java 客户端生成 IOrecord?
回答我自己的问题。这是算法配置中的一个问题。我减少了小批量大小,它工作正常。