У меня есть список строк, которые служат метками для моей проблемы классификации (распознавание изображений с помощью сверточной нейронной сети). Эти метки состоят из 5-8 символов (цифры от 0 до 9 и буквы от A до Z). Чтобы обучить свою нейронную сеть, я бы хотел одно горячее кодирование меток. Я написал код для кодирования одной метки, но все еще испытываю трудности при попытке применить код к списку.
Вот мой код для одной метки, которая отлично работает:
from numpy import argmax
# define input string
data = '7C24698'
print(data)
# define universe of possible input values
characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ '
# define a mapping of chars to integers
char_to_int = dict((c, i) for i, c in enumerate(characters))
int_to_char = dict((i, c) for i, c in enumerate(characters))
# integer encode input data
integer_encoded = [char_to_int[char] for char in data]
print(integer_encoded)
# one hot encode
onehot_encoded = list()
for value in integer_encoded:
character = [0 for _ in range(len(characters))]
character[value] = 1
onehot_encoded.append(character)
print(onehot_encoded)
# invert encoding
inverted = int_to_char[argmax(onehot_encoded[0])]
print(inverted)
Теперь я хочу получить тот же вывод для списка меток и сохранить вывод в новом списке:
list_of_labels = ['7C24698', 'NDK745']
encoded_labels = []
Как я могу это сделать?