Тензор потока TFRecord k-hot кодирование

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

Но вместо использования горячего кодирования я хотел бы использовать кодирование k-hot. Например, вместо меток [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))?

0 ответов

Учитывая, что у вас есть список меток, таких как [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]
Другие вопросы по тегам