2017-04-23 16 views
0

私はここで愚かなことをしているかもしれませんが、なぜこのエラーが出るのか分かりません。tf.train.Features TypeError:ポジショニング引数が許可されていません

このコードは動作します:

example = tf.train.Example(features=tf.train.Features(feature={ 
     'image/height': _int64_feature(FLAGS.img_height), 
     'image/width': _int64_feature(FLAGS.img_width), 
     'image/colorspace': _bytes_feature(tf.compat.as_bytes(colorspace)), 
     'image/channels': _int64_feature(channels), 
     'image/format': _bytes_feature(tf.compat.as_bytes(image_format)), 
     'image/label': _bytes_feature(label_img_buffer), 
     'image/label_path': _bytes_feature(tf.compat.as_bytes(os.path.basename(lbl_path))), 
     'image/fn_0': _bytes_feature(tf.compat.as_bytes(os.path.basename(ex_paths[0]))), 
     'image/encoded_0': _bytes_feature(tf.compat.as_bytes(ex_image_buffers[0])), 
     'image/fn_1': _bytes_feature(tf.compat.as_bytes(os.path.basename(ex_paths[1]))), 
     'image/encoded_1': _bytes_feature(tf.compat.as_bytes(ex_image_buffers[1])), 
     'image/fn_2': _bytes_feature(tf.compat.as_bytes(os.path.basename(ex_paths[2]))), 
     'image/encoded_2': _bytes_feature(tf.compat.as_bytes(ex_image_buffers[2]))})) 
return example 

をしかし、このコードは動作しません(記事のタイトルに例外TypeError):

feature_dict={ 
     'image/height': _int64_feature(FLAGS.img_height), 
     'image/width': _int64_feature(FLAGS.img_width), 
     'image/colorspace': _bytes_feature(tf.compat.as_bytes(colorspace)), 
     'image/channels': _int64_feature(channels), 
     'image/format': _bytes_feature(tf.compat.as_bytes(image_format)), 
     'image/label': _bytes_feature(label_img_buffer), 
     'image/label_path': _bytes_feature(tf.compat.as_bytes(os.path.basename(lbl_path))), 
     } 

    for idx, image in sorted(ex_image_buffers.iteritems()): 
    img_key = 'image/encoded_' + str(idx) 
    fn_key = 'image/fn_' + str(idx) 
    feature_dict[img_key] = _bytes_feature(tf.compat.as_bytes(image)) 
    feature_dict[fn_key] = _bytes_feature(tf.compat.as_bytes(os.path.basename(ex_paths[idx]))) 

    example = tf.train.Example(features=tf.train.Features(feature_dict)) 
    return example 

ex_image_buffersリストです。

私が知る限り、tf.train.Featuresは辞書を引数としてとり、最初の例と2番目の例では同じ辞書を組み立てています。 2番目のコードでは、他のコードに基づいて辞書を調整できるため、異なるフィールドをハードコーディングしないようにしたいと考えています。

アイデア?助けてくれてありがとう!

答えて

1

ええ、あなたは愚かな間違いがあると思います。エラー状態として

example = tf.train.Example(features=tf.train.Features(feature=feature_dict))

を試してみて、tf.train.Featuresは、キーワード/引数のペアを通過する必要があります。提供した最初の例のように、キーワードfeatureを追加する必要があります。

+0

ありがとうございました。ヘルプをよろしくお願いいたします。なぜこの要件がここにあるのでしょうか? – user3325669

+0

私はAPIを設計していないので、私は言うことができません。クラスのコンストラクタを使用していて、ドキュメンテーション(https://www.tensorflow.org/api_docs/python/tf/train/Features)は '** kwargs'のみを入力として示しています。 –

+0

@JimParkerあなたが提供したドキュメントへのリンクは絶対に何も持っていません。ドキュメントは主にすべてのメソッドのリストであるため、これらのメソッドが何をするかを知る方法はありますか? – deadcode

関連する問題