2016-12-26 10 views
2

TFRecordsceleba face datasetに使用します。セレバ顔dataseは、5つのランドマークの場所、40のバイナリ属性の注釈をイメージごとに持っています。マルチタスクのデータセットのテンソルフローTFRコードの使用

TFRecordsは、1つのlableを与えることができます。私はこのラベルをすべてTFRコードに保存したい。 これをどのようにテンソルフローで行うことができますか?


私のソリューションは、次のとおりです。 私はTFRecordsファイルを作成するためにthisを使用しています。 次に、celeba属性ファイルを.csvに変換し、_dataset = pd.read_csv("./List_attr_celeba.csv")で読んでいます。

次に、パスに_dataset["path"] = './img_align_celeba/' + _dataset["name"]を追加します。 (私はimg_align_celebaフォルダにあった画像を整列して使用しました)。

初めての場合、私はlabels = _dataset.ix[:,1:11].as_matrix()を使用しました。コードで

example = tf.train.Example(features=tf.train.Features(feature={ 'height': _int64_feature(rows), 'width': _int64_feature(cols), 'depth': _int64_feature(depth), 'label': _int64_feature(int(labels[index])), 'image_raw': _bytes_feature(image_raw)}))

ラベルは'(<class 'int'>,)であってもよいが、<class 'numpy.ndarray'>を入力labels[index]ていなければなりません。

は、だから私は変更:

example = tf.train.Example(features=tf.train.Features(feature={ 'height': _int64_feature(rows), 'width': _int64_feature(cols), 'depth': _int64_feature(depth), 'label': _int64_feature(labels[index].tolist()), 'image_raw': _bytes_feature(image_bytes)})) writer.write(example.SerializeToString())

と:

def _int64_feature(value): if type(value)!= list: value = [value] return tf.train.Feature(int64_list=tf.train.Int64List(value=value))

答えて

0

を、私はあなたが書く各レコードは、あなたによって定義されるプロトバッファであると思うし、あなたは何が必要含めることができますprotoバッファに格納します。ここで

は、私はあなたが別の機能として、各ラベルに好きなだけラベルを含めるように再利用することができると信じて例のプロトバッファー、次のとおりです。https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/how_tos/reading_data/convert_to_records.py#L66 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/example/example.proto#L88 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/example/feature.proto

+0

私の問題は、私は 'numpy'を使用したことでした'配列'しかし、私は 'labels [index]'の 'tolist()'関数を使い、numpy.int32をintに変換します。 – Tavakoli

+0

これはうまく聞こえます。あなたは何が問題なのかを精緻化/明確化できますか? –

+0

質問に追加します。 – Tavakoli

関連する問題