dataset = slim.dataset.Dataset(...)
provider = slim.dataset_data_provider.DatasetDataProvider(dataset, ..._
image, labels = provider.get(['image', 'label')
Скажем, для примера в наборе данных A labels
может быть [1, 2, 1, 3]
. Однако по какой-то причине (например, из-за набора данных B) я хотел бы сопоставить идентификаторы меток с другими значениями. Отображение может быть как ниже.
# {old_label: target_label}
mapping = {0: 0, 1: 2, 2: 2, 3: 2, 4: 2, 5: 3, 6: 1}
Пока я предполагаю два пути:
- tf.data.Dataset
, кажется, имеет функцию map(map_func)
, которую должны пройти все примеры, что может быть решением. Тем не менее, я более знаком с slim.dataset.Dataset
. Есть ли похожий трюк для slim.dataset.Dataset
?
- Мне было интересно, могу ли я просто применить некоторую функцию отображения к тензору label
, например:
new_labels = tf.map_fn(lambda x: x+1, labels, dtype=tf.int32)
# labels = [1 2 1 3] --> new_labels = [2 3 2 4]. This works.
new_labels = tf.map_fn(lambda x: mapping[x], labels, dtype=tf.int32)
# I wished but this does not work!
Однако нижеприведенное не сработало, и это то, что мне нужно. Кто-нибудь может посоветовать, пожалуйста?