Как нормализовать данные при использовании Keras fit_generator - PullRequest
0 голосов
/ 04 июня 2018

У меня очень большой набор данных, и я использую fit_generator от Keras для обучения модели Keras (бэкэнд-тензор потока).Мои данные должны быть нормализованы по всему набору данных, однако при использовании fit_generator у меня есть доступ к относительно небольшим пакетам данных, и нормализация данных в этом небольшом пакете не является показателем нормализации данных по всему набору данных.Воздействие довольно большое (я протестировал его, и точность модели значительно снизилась).

Мой вопрос таков: какова правильная практика нормализации данных по всему набору данных при использовании Keras 'fit_generator?И последнее замечание: мои данные представляют собой смесь текстовых и числовых данных, а не изображений, и, следовательно, я не могу использовать некоторые из возможностей генератора изображений, предоставляемого Keras, который может решить некоторые проблемы с данными изображений.

Я смотрел на нормализацию полного набора данных перед тренировкой (я полагаю, что это "грубая сила"), но мне интересно, есть ли более элегантный способ сделать это.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Это можно сделать, предварительно обработав ваши данные в матрице.Одно горячее закодировать ваши текстовые данные:

from keras.preprocessing.text import Tokenizer
# X is a list of text elements
t = Tokenizer()
t.fit_on_texts(X)
X_one_hot = t.texts_to_matrix(X)

и нормализовать ваши числовые данные с помощью:

for i in range(len(matrix)):
  refactored_array = (matrix[i]- np.min(matrix[i], 0)) / (np.max(matrix[i], 0) + 0.0001)  

Если вы объединяете две матрицы, вы должны были должным образом предварительно обработать свои данные.Я просто мог представить, что текст всегда будет слишком сильно влиять на результат вашей модели.Поэтому было бы целесообразно обучать отдельные модели для текстовых и числовых данных.

0 голосов
/ 04 июня 2018

Генератор позволяет вам выполнять обработку данных «на лету», но предварительная обработка данных перед обучением является предпочтительным подходом:

  1. Предварительная обработка и сохранение позволяют избежать обработки данныхдля каждой эпохи вы должны просто делать небольшие операции, которые можно применить к пакетам.Например, горячее кодирование является обычным, в то время как предложения о токенизации и т. Д. Могут выполняться в автономном режиме.
  2. Возможно, вы настроите свою модель.Вы не хотите, чтобы накладные расходы нормализовали данные, и убедитесь, что каждая модель тренируется на одних и тех же нормализованных данных.

Итак, предварительно обработайте один раз в автономном режиме перед тренировкой и сохраните его в качестве данных тренировки.,При прогнозировании вы можете обрабатывать на лету.

...