тензор потока TFRecord k-hot кодирование - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь создать свой обучающий набор данных в формате TFRecord, следуя этому руководству: https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/using_your_own_dataset.md для определения API.

Но вместо использования одного горячего кодирования я хотел бы использовать kгорячее кодирование.Например, вместо меток [0 0 0 1 0] у меня может быть [0 1 0 1 0], поэтому мультиклассификация.Мне было интересно, как это сделать с форматом TFRecord.Нужно ли создавать два tf.train.example, если я использую кодирование 2-hot?(используя два раза одни и те же координаты букмекера) или есть другой способ?(например, используя 'image/object/class/text': dataset_util.bytes_list_feature(classes_text) и 'image/object/class/text2': dataset_util.bytes_list_feature(classes_text2))?

1 Ответ

0 голосов
/ 13 марта 2019

Учитывая, что у вас есть список меток, таких как [0, 1, 2] и 10 классов, вам необходимо

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

Затем вы передаете метку в tf.Пример как одна из функций

'label': int64_feature(label)

После этого, когда вы анализируете свой набор данных во время обучения, вы декодируете метку следующим образом:

tf.reduce_max(tf.one_hot(labels, num_classes, dtype=tf.int32), axis=0)

Что дает

[1 1 1 0 0 0 0 0 0 0]
...