На этом шаге мы рассмотрим особенности реализации такой подготовки.
Нельзя передать списки целых чисел непосредственно в нейронную сеть. Все они имеют разную длину, тогда как нейронная сеть ожидает получить для обработки согласованные пакеты данных. Поэтому мы должны преобразовать их в тензоры. Сделать это можно двумя способами:
Мы пойдем по второму пути, с векторизованными данными, которые для лучшего понимания предмета создадим вручную.
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)
Вот как теперь выглядят образцы:
print(x_train[0])
[0. 1. 1. ... 0. 0. 0.]
Нам также нужно векторизовать метки, что делается очень просто:
y_train = np.asarray(train_labels).astype('float32') y_test = np.asarray(test_labels).astype('float32')
Теперь данные готовы к передаче в нейронную сеть.
На следующем шаге мы рассмотрим конструирование модели.