1

Googleのクラウドmlの再トレーニング開始のために花tutorialに従っています。私はチュートリアルを実行することができます、列車、予測、ちょうど良い。クラウドレットの再学習開始 - 有効な範囲外のラベル値を受け取りました

私は自分自身のテストデータセットの花のデータセットを置き換えました。画像桁の光学的文字認識。

enter image description here

私はエラーが表示されるモデルトレーニング時:

Invalid argument: Received a label value of 13 which is outside the valid range of [0, 6). Label values: 6 3 2 7 3 7 6 6 12 6 5 2 3 6 8 8 8 8 4 6 5 13 7 4 8 12 5 2 4 12 12 8 8 8 12 6 4 2 12 4 3 8 2 6 8 12 2 8 4 6 2 4 12 5 5 7 6 2 2 3 2 8 2 5 2 8 2 7 4 12 8 4 2 4 8 2 2 8 2 8 7 6 8 3 5 5 5 8 8 2 5 3 9 8 5 8 3 2 5 4 

を訓練し、evalのデータセットの形式は次のようになります。

[email protected]:~/MeerkatReader/cloudML# head training_dataGCS.csv 
gs://api-project-773889352370-ml/TrainingData/0_2.jpg,H 
gs://api-project-773889352370-ml/TrainingData/0_4.jpg,One 
gs://api-project-773889352370-ml/TrainingData/0_5.jpg,Five 

辞書ファイルは、次のようになります

$ cat cloudML/dict.txt 
Eight 
F 
Five 
Forward_slash 
Four 
H 
Nine 
One 
Seven 
Six 
Three 
Two 
Zero 

私はもともと1,2,3,4や/などのラベルを持っていましたが、特殊文字(特に/)の場合は文字列に変更しました。私はやや似たようなメッセージhereを見ることができますが、それは0番目のインデックスに関連していました。

実際には13種類のラベルがあるというメッセージが奇妙です。何とかテンソルフローはわずか7(0-6)を探しています。私の質問は、どのような書式設定エラーによってテンソルがラベルが少ないと思うかもしれないということです。私は、テストとトレーニングの両方のデータ80-20の分割が(異なる周波数ではあるが)すべてのラベルクラスを持っていることを確認することができます。

Googleが提供する最新のドッカービルドから実行しています。

`docker run -it -p "127.0.0.1:8080:8080" --entrypoint=/bin/bash gcr.io/cloud-datalab/datalab:local-20161227 

私が使用してトレーニングジョブを送信しています

# Submit training job. 
gcloud beta ml jobs submit training "$JOB_ID" \ 
    --module-name trainer.task \ 
    --package-path trainer \ 
    --staging-bucket "$BUCKET" \ 
    --region us-central1 \ 
    -- \ 
    --output_path "${GCS_PATH}/training" \ 
    --eval_data_paths "${GCS_PATH}/preproc/eval*" \ 
    --train_data_paths "${GCS_PATH}/preproc/train*" 

全エラー:

Error reported to Coordinator: <class 'tensorflow.python.framework.errors_impl.InvalidArgumentError'>, Received a label value of 13 which is outside the valid range of [0, 6). Label values: 6 3 2 7 3 7 6 6 12 6 5 2 3 6 8 8 8 8 4 6 5 13 7 4 8 12 5 2 4 12 12 8 8 8 12 6 4 2 12 4 3 8 2 6 8 12 2 8 4 6 2 4 12 5 5 7 6 2 2 3 2 8 2 5 2 8 2 7 4 12 8 4 2 4 8 2 2 8 2 8 7 6 8 3 5 5 5 8 8 2 5 3 9 8 5 8 3 2 5 4 [[Node: evaluate/xentropy/xentropy = SparseSoftmaxCrossEntropyWithLogits[T=DT_FLOAT, Tlabels=DT_INT64, _device="/job:master/replica:0/task:0/cpu:0"](final_ops/input/Wx_plus_b/fully_connected_1/BiasAdd, inputs/Squeeze)]] Caused by op u'evaluate/xentropy/xentropy', defined at: File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/root/.local/lib/python2.7/site-packages/trainer/task.py", line 545, in <module> tf.app.run() File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 43, in run sys.exit(main(sys.argv[:1] + flags_passthrough)) File "/root/.local/lib/python2.7/site-packages/trainer/task.py", line 308, in main run(model, argv) File "/root/.local/lib/python2.7/site-packages/trainer/task.py", line 439, in run dispatch(args, model, cluster, task) File "/root/.local/lib/python2.7/site-packages/trainer/task.py", line 480, in dispatch Trainer(args, model, cluster, task).run_training() File "/root/.local/lib/python2.7/site-packages/trainer/task.py", line 187, in run_training self.args.batch_size) File "/root/.local/lib/python2.7/site-packages/trainer/model.py", line 278, in build_train_graph return self.build_graph(data_paths, batch_size, GraphMod.TRAIN) File "/root/.local/lib/python2.7/site-packages/trainer/model.py", line 256, in build_graph loss_value = loss(logits, labels) File "/root/.local/lib/python2.7/site-packages/trainer/model.py", line 396, in loss logits, labels, name='xentropy') File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_ops.py", line 1544, in sparse_softmax_cross_entropy_with_logits precise_logits, labels, name=name) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_nn_ops.py", line 2376, in _sparse_softmax_cross_entropy_with_logits features=features, labels=labels, name=name) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py", line 759, in apply_op op_def=op_def) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2238, in create_op original_op=self._default_original_op, op_def=op_def) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1130, in __init__ self._traceback = _extract_stack() InvalidArgumentError (see above for traceback): Received a label value of 13 which is outside the valid range of [0, 6). Label values: 6 3 2 7 3 7 6 6 12 6 5 2 3 6 8 8 8 8 4 6 5 13 7 4 8 12 5 2 4 12 12 8 8 8 12 6 4 2 12 4 3 8 2 6 8 12 2 8 4 6 2 4 12 5 5 7 6 2 2 3 2 8 2 5 2 8 2 7 4 12 8 4 2 4 8 2 2 8 2 8 7 6 8 3 5 5 5 8 8 2 5 3 9 8 5 8 3 2 5 4 [[Node: evaluate/xentropy/xentropy = SparseSoftmaxCrossEntropyWithLogits[T=DT_FLOAT, Tlabels=DT_INT64, _device="/job:master/replica:0/task:0/cpu:0"](final_ops/input/Wx_plus_b/fully_connected_1/BiasAdd, inputs/Squeeze)]] 

すべては私のバケット

enter image description here

そしてサヴァンに大丈夫に見えますg私のログイベント。

enter image description here

答えて

1

私はあなたがあなたのトレーニングのジョブを送信する際--label_count 13を指定する必要があると思います。このフラグは、--の後の第2グループのフラグの後に置かなければなりません。実行するコードに渡す必要があり、gcloud/Cloud MLには渡す必要がないからです。

問題は、TensorFlowトレーニングコードがデータをステップ実行する前にいくつの出力ロギングを行うかを知る必要があることです。前処理ステップから中間ファイルを検査することはできません。

これが役立つかどうか教えてください。

+0

それをしました。助けてくれてありがとう。私が見なければならない他のドキュメントはありますか? https://cloud.google.com/ml/reference/commandline/jobs/submit/trainingこちらをご覧ください。そのフラグは表示されません。私はどこで実装を探すべきですか?私はこれがまだベータ版であることを認識しています。 – bw4sz

+0

私の答えを更新しました。このフラグはmodel.pyの中にあり、CloudMLとは関係がありませんが、あなたが走っているTensorflowコードについてです! – JoshGC

0

フラグの後に - 具体的かつmodel.pyファイルで指定されたモデル:

def create_model(): 
    """Factory method that creates model to be used by generic task.py.""" 
    parser = argparse.ArgumentParser() 
    # Label count needs to correspond to nubmer of labels in dictionary used 
    # during preprocessing. 
    parser.add_argument('--label_count', type=int, default=5) 
    parser.add_argument('--dropout', type=float, default=0.5) 
    parser.add_argument(
     '--inception_checkpoint_file', 
     type=str, 
     default=DEFAULT_INCEPTION_CHECKPOINT) 
    args, task_args = parser.parse_known_args() 
    override_if_not_in_args('--max_steps', '1000', task_args) 
    override_if_not_in_args('--batch_size', '100', task_args) 
    override_if_not_in_args('--eval_set_size', '370', task_args) 
    override_if_not_in_args('--eval_interval_secs', '2', task_args) 
    override_if_not_in_args('--log_interval_secs', '2', task_args) 
    override_if_not_in_args('--min_train_eval_rate', '2', task_args) 
    return Model(args.label_count, args.dropout, 
       args.inception_checkpoint_file), task_args 

は、モデルのトレーニングに影響を与えるように、などLABEL_COUNT、ドロップアウト、MAX_STEPS、のようなものを変更することができます。

HTH。

関連する問題