我正在尝试使用 Linear Learner 算法为 Sagemaker 构建训练集。该算法支持 recordIO 包装的 protobuf 和 csv 作为训练数据的格式。由于训练数据是使用 spark 生成的,因此我在从数据帧生成 csv 文件时遇到了问题(目前这似乎已损坏),因此我正在尝试使用 protobuf。
我设法使用 Protostuff 为训练数据集创建了一个二进制文件,Protostuff 是一个允许从 POJO 对象生成 protobuf 消息的库。问题是在触发训练作业时,我从 SageMaker 收到该消息:ClientError:未处理训练数据。要么是训练通道是空的,要么是小批量太大。验证训练数据是否包含非空文件,并且小批量大小小于每个训练主机的记录数。
训练文件肯定不是空的。我怀疑我生成训练数据的方式不正确,因为我能够使用 libsvm 格式训练模型。有没有办法使用 Sagemaker java 客户端生成 IOrecord?