機械学習
モデルジェネレーター予測(バッチ)
概要
このブロックは、モデルジェネレーターでトレーニングした結果と予測因子データを使って、バッチで予測を行います。大量の予測データをまとめて予測するのに向いています。
対応する モデルジェネレーターは、以下の 4 種類です。
- 数値分類タイプ
- 数値回帰タイプ
- 画像分類タイプ
- 画像物体検出タイプ
info_outline「モデルジェネレーター予測(オンライン)」ブロックに比べると予測に時間がかかります。ただし、予測データが大量の場合は、「モデルジェネレーター予測(バッチ)」ブロックの方がより適切な予測時間となります。
数値分類タイプと数値回帰タイプの場合は、Google Cloud Storage open_in_new (GCS) 上のテキストファイルから予測因子データを読み込んで予測します。予測した結果は、GCS のフォルダーへテキストファイルで出力します。予測結果のファイルは、原則として複数のファイルに分割して出力します。
画像分類タイプの場合は、GCS 上の画像ファイルか画像ファイルを埋め込んだ JSON ファイルを読み込んで予測します。予測結果の扱いは、数値分類タイプ・数値回帰タイプの場合と同様です。
info_outline このブロックで使用するモデルジェネレーターのトレーニング結果(モデル)は、適用を済ませておいてください。
warning セルフサービスプランの場合は、このブロックを使用する前に、Dataflow API を有効にしてください。詳しくは、「基本操作ガイド > ヒント > Google API を有効にする」を参照してください。
予測因子データの準備
数値分類タイプ・数値回帰タイプ
予測因子データは、以下のような JSON 形式のテキストファイルで準備します。
{"key": "1", "sepal_length": 5.9, "sepal_width": 3.0, "petal_length": 4.2, "petal_width": 1.5} {"key": "2", "sepal_length": 6.9, "sepal_width": 3.1, "petal_length": 5.4, "petal_width": 2.1} {"key": "3", "sepal_length": 5.1, "sepal_width": 3.3, "petal_length": 1.7, "petal_width": 0.5}
- 1 行に 1 つの JSON オブジェクト(
{...}
という形式)で記述します。 - 行は改行で区切ります。
- 1 件分の予測因子データを 1 つの JSON オブジェクトにまとめます。
- JSON オブジェクトは、複数の「名前」と「値」のペアで構成します。
- 名前と値のペアは、
:
で区切ります。 :
の左側が「名前」で、:
の右側が「値」です(名前: 値
)。
- 名前と値のペアは、
- 値には、以下の 3 種類が指定できます。
- 数値:
1
や23.45
など(数値型・月型・曜日型のデータ) - 文字列:
"abc"
や"xyz"
などの"
で囲まれたもの(文字列列挙型のデータ) - 配列値:
[1, 2, 3]
や[4, 5.6, 7.0]
などの複数個の数値の並びを[
と]
で囲んだもの(次元数が指定された数値型のデータ)
- 数値:
- JSON オブジェクト(予測因子データ)には、
"key"
という名前を含めてください。値には、予測因子データ 1 件ごとにユニークな文字列を指定します。
予測結果は、GCS のフォルダーに JSON 形式のテキストファイルで出力されます。ファイルは、以下のようなファイル名で出力され、XXXXX と YYYYY の部分が出力するファイル数によって変化します。
prediction.results-XXXXX-of-YYYYY
- XXXXX: 0 から始まるファイルのインデックスとなる番号(00000 や 00001 など)。
- YYYYY: 予測結果ファイルの総数(00001 や 00003 など)。
以下は、数値分類タイプの予測結果の例です。
{"label_index": 2, "score": [9.230815578575857e-08, 0.007054927293211222, 0.9929450154304504], "key": "2", "label": "Iris-virginica"}
- 1 行に 1 つの JSON オブジェクト({...} という形式)で出力されます。
- 行は改行で区切られます。
- 1 件分の予測結果を 1 つの JSON オブジェクトにまとまっています。
"label_index" "score" 配列(分類ごとの予測の確からしさ)のどの値が、"label"(予測値)として採用されたかを示す値です。0 が先頭の配列要素、1 がその次の要素を示しています。 "score" 分類ごとの予測の確からしさです。
この例の場合は、左から順に分類値 0 が 0.000009231%、分類値 1 が 0.705492729%、分類値 2 が 99.294501543% の確からしさという意味になります。"key" 予測に使用した予測因子データの "key" の値です。 "label" 予測値です。
以下は、数値回帰タイプの予測結果の例です。
{"output": 10304.1962890625, "key": "20170103"}
- 1 行に 1 つの JSON オブジェクト({...} という形式)で出力されます。
- 行は改行で区切られます。
- 1 件分の予測結果を 1 つの JSON オブジェクトにまとまっています。
"output" 予測値です。 "key" 予測に使用した予測因子データの "key" の値です。
画像分類タイプ・画像物体検出タイプ
画像分類タイプの予測方法は、2 種類あります。
- GCS 上の画像ファイルを指定して予測する方法
- JSON ファイルを指定して予測する方法
info_outline 画像ファイルの指定には、以下の留意点があります。
- 透過あり(RGBA)画像には、対応していません。RGBA 画像は、RGB(透過なし)画像に変換後、利用願います。
変換した RGB 画像の各画素の色がトレーニングや予測に及ぼす影響を統一させるため、統一した方法(同一ツール同一オプション)で変換処理することを推奨します。 - 画像ファイルサイズは、おおよそ 1.125 MB までです。この数値は目安であり、実際には若干前後します。
- 画像物体検出タイプで、複数画像の予測を一度に行う場合は、予測に使用する画像のサイズを合わせる必要があります。
以下、それぞれの方法について、解説します。
GCS 上の画像ファイルを指定して予測する方法
この方法は、簡単で一般的な方法です。
- 画像ファイル群を GCS 上の 1 つのフォルダーにまとめてアップロードします。
- そのフォルダーへの GCS URL を [予測因子データのファイルGCS URL] プロパティに指定します。
- GCS URL の最後には、必ず
/
を付けてください。 - 対応する画像ファイルの形式は、JPEG・PNG・GIF・BMP です。
- 画像ファイルの拡張子は、.jpg・.jpeg・.png・.gif・.bmp のいずれかです(大文字でも小文字でも構いません)。
- アップロードする画像ファイルは、1 つのフォルダーの中で、フォルダー分けした配置が可能です(下図参照)。
JSON ファイルを指定して予測する方法
画像ファイルを Base64 open_in_new でエンコードして、JSON ファイルに書き込む方法です。
- JSON ファイルには、改行で区切られた 1 つ以上の JSON オブジェクトが必要です。
(例){"key": "samp01", "image": {"b64": "/9j/4...(中略).../2Q=="}} {"key": "samp02", "image": {"b64": "/9j/4...(中略).../2Q=="}}
- JSON オブジェクトの形式は、以下のとおりです。
(形式){"key": "キー", "image": {"b64": "Base64 エンコード画像データ"}}
※赤字の部分に予測画像の情報を設定します。名前 値 "key"
予測画像を識別するためのキーとなる文字列を指定します。 "b64"
予測画像を Base64 でエンコードしたデータを指定します。 - 対応する画像ファイルの形式は、JPEG・PNG・GIF・BMP です。
- JSON ファイルは、GCS 上にアップロードして、そのファイルへの GCS URL を [予測因子データのファイル GCS URL] プロパティに指定します。
予測結果
予測結果は、GCS のフォルダーに JSON 形式のテキストファイルで出力されます。ファイルは、以下のようなファイル名で出力され、XXXXX と YYYYY の部分が出力するファイル数によって変化します。
prediction.results-XXXXX-of-YYYYY
- XXXXX: 0 から始まるファイルのインデックスとなる番号(00000 や 00001 など)。
- YYYYY: 予測結果ファイルの総数(00001 や 00003 など)。
以下は、予測結果の例です。
{"labels": ["cat", "dog"], "score": [1.0, 2.0886015139609526e-10], "key": "gs://my-bucket/images/sample_01.jpg", "label": "cat"} {"labels": ["cat", "dog"], "score": [3.7939051367175125e-07, 0.9999996423721313], "key": "gs://my-bucket/images/sample_02.jpg", "label": "dog"}
- 1 行に 1 つの JSON オブジェクト({...} という形式)で出力されます。
- 行は改行で区切られます。
- 1 件分の予測結果が 1 つの JSON オブジェクトにまとまっています。
"labels" 分類の種類のリストです。この例の場合、"cat"(猫)と "dog"(犬)の 2 種類です。
"labels" のリスト順序は、次の "score" のリスト順序に対応しています。
"score" 分類ごとの予測の確からしさです。
この例の場合、"score" の 1 番目の値は、"cat" に対応し、"score" の 2 番目の値は、"dog" に対応します。
"key" - GCS 上の画像ファイルを指定して予測した場合は、画像ファイルへの GCS URL が出力されます。
- JSON ファイルを指定して予測した場合は、ファイル内で指定した "key" の値が出力されます。
"label" 予測値です。"score" の最も高い分類値が予測値です。
プロパティ
プロパティ名 | 説明 |
---|---|
ブロック名 |
編集パネルに配置した当該ブロックの表示名が変更できます。 ブロックリストパネル中のブロック名は変更されません。 |
GCP サービスアカウント | このブロックで使用する GCP サービスアカウントを選択します。 |
モデル | 予測に使用するモデルジェネレーターのトレーニング結果(モデル)を選択します。 |
予測に使うバージョン |
予測に、[本番用]と[検証用]のどちらのバージョンを使用するかを指定します。 |
予測因子データのファイル GCS URL |
[変数展開の指定が可能][% 形式の文字列書式の指定が可能]
|
予測結果の出力先 GCS URL |
予測結果を出力する GCS フォルダーの場所を GCS URL 形式で指定します。 例えば、バケットが info_outline 指定したフォルダーが存在しない場合は、自動でフォルダーを作成します。 [変数展開の指定が可能][% 形式の文字列書式の指定が可能]
|
ブロックメモ | このブロックに関するメモが記載できます。このブロックの処理に影響しません。 |
バッチサイズ |
バッチ予測では、あらかじめ予測因子データをメモリに貯めて(バッファリングして)から、予測を行います。 バッチサイズでは、このバッファリングする予測因子データの件数(レコード数)を指定します。 バッチサイズを大きくすることで予測が速くなる可能性もありますが、メモリ使用量の増大により、メモリ不足で予測が失敗する可能性もあります。 このため、予測因子データのサイズを考慮した適切な(メモリ不足とならない)バッチサイズの設定が必要です。 |