Тензор потока 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]