На этом шаге мы рассмотрим особенности такой подготовки.
Для векторизации данных можно повторно использовать код из предыдущего примера.
import numpy as np def vectorize_sequences(sequences, dimension=10000): # Создание матрицы с формой (len(sequences), dimension), # заполненной нулями results = np.zeros((len(sequences), dimension)) for i, sequence in enumerate(sequences): for j in sequence: # Запись единицы в элемент с данным индексом results[i, j] = 1. return results # Векторизованные обучающие данные x_train = vectorize_sequences(train_data) # Векторизованные контрольные данные x_test = vectorize_sequences(test_data)
Векторизовать метки можно двумя способами: сохранить их в тензоре целых чисел или использовать прямое кодирование. Прямое кодирование (one-hot encoding) широко используется для подготовки категорийных данных и также называется кодированием категорий (categorical encoding). В данном случае прямое кодирование меток заключается в конструировании вектора с нулевыми элементами и значением 1 в элементе, индекс которого соответствует индексу метки. Пример 4.14 это иллюстрирует.
def to_one_hot(labels, dimension=46): results = np.zeros((len(labels), dimension)) for i, label in enumerate(labels): results[i, label] = 1. return results # Векторизованные обучающие метки y_train = to_one_hot(train_labels) # Векторизованные контрольные метки y_test = to_one_hot(test_labels)
Следует отметить, что этот способ уже реализован в Keras:
from tensorflow.keras.utils import to_categorical y_train = to_categorical(train_labels) y_test = to_categorical(test_labels)
На следующем шаге мы рассмотрим конструирование модели.