Я новичок в Python, и я изучаю TensorFlow. В учебнике, использующем набор данных notMNIST, они приводят примерный код, чтобы преобразовать матрицу меток в один-на-n закодированный массив.
Цель состоит в том, чтобы взять массив, состоящий из целых чисел меток 0... 9, и вернуть матрицу, где каждое целое число было преобразовано в один из n закодированных массивов, таких как:
0 -> [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
1 -> [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
2 -> [0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
...
Код, который они дают для этого:
# Map 0 to [1.0, 0.0, 0.0 ...], 1 to [0.0, 1.0, 0.0 ...]
labels = (np.arange(num_labels) == labels[:,None]).astype(np.float32)
Однако я не понимаю, как этот код делает это вообще. Похоже, он просто генерирует массив целых чисел в диапазоне от 0 до 9, а затем сравнивает это с матрицей меток и преобразует результат в float. Как оператор ==
приводит к кодировке с одним кодированием?