Googleのクラウドml-engineでバッチ予測ジョブを作成しようとしています。私はJavaでファイルを作成し、次のコードでバケツにアップロードgcloud ml-engineでバッチ予測の入力ファイルをアップロードするには?
{
insertId: "wr85wwg6shs9ek"
logName: "projects/tensorflow-test-1-168615/logs/ml.googleapis.com%2Ftest_job_23847239"
receiveTimestamp: "2017-08-04T16:07:29.524193256Z"
resource: {
labels: {
job_id: "test_job_23847239"
project_id: "tensorflow-test-1-168615"
task_name: "service"
}
type: "ml_job"
}
severity: "ERROR"
textPayload: "TypeError: decoding Unicode is not supported"
timestamp: "2017-08-04T16:07:29.524193256Z"
}
:残念ながら、私はいつも同じエラーを取得
BufferedImage bufferedImage = ImageIO.read(new URL(media.getUrl()));
int[][][] imageMatrix = convertToImageToMatrix(bufferedImage);
String imageString = matrixToString(imageMatrix);
String inputContent = "{\"instances\": [{\"inputs\": " + imageString + "}]}";
byte[] inputBytes = inputContent.getBytes(Charset.forName("UTF-8"));
Blob inputBlob = mlInputBucket.create(media.getId().toString() + ".json", inputBytes, "application/json");
inputPaths.add("gs://" + Properties.getCloudBucketNameInputs() + "/" + inputBlob.getName());
このコードでは、私は画像をダウンロードし、変換しますuint8に変換し、json文字列としてフォーマットします。ファイルが作成され、バケットに存在します。また、jsonファイルが有効であることも確認しました。
次のステップでは、私はすべて作成されたファイルを収集し、予測ジョブを開始:
GoogleCloudMlV1PredictionInput input = new GoogleCloudMlV1PredictionInput();
input.setDataFormat("TEXT");
input.setVersionName("projects/" + DatastoreOptions.getDefaultProjectId() + "/models/" + Properties.getMlEngineModelName() + "/versions/" + Properties.getMlEngineModelVersion());
input.setRegion(Properties.getMlEngineRegion());
input.setOutputPath("gs://" + Properties.getCloudBucketNameOutputs() + "/" + jobId);
input.setInputPaths(inputPaths);
GoogleCloudMlV1Job job = new GoogleCloudMlV1Job();
job.setJobId(jobId);
job.setPredictionInput(input);
engine.projects().jobs().create("projects/" + DatastoreOptions.getDefaultProjectId() , job).execute();
最後に、ジョブが作成されますが、結果は最初から一つです。
また、gcloud sdkを使用してジョブを開始しようとしましたが、結果は同じです。しかし、ファイルを変更してinstances
オブジェクトを削除し、online predictionの正しいフォーマットと一致させると、動作します(動作するようにするために、オンライン予測のペイロードクォータのために入力からほとんどの行を削除する必要があります) 。
私はobject detectionの訓練を受けたペットモデルを使用しています。作成した入力ファイルの1つはhereです。
私はここで間違っていますか?
OK、今私は混乱しています。バッチ予測ジョブを実行するときは、 'インスタンス'を記述する必要があります。私はこれを見落としたと思う。 –