Можно ли выполнить горячее кодирование в модели Keras? - PullRequest
0 голосов
/ 06 мая 2020

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

Мне было интересно, можно ли выполнить однократное кодирование в модели Keras, потому что целочисленное кодирование прекрасно подходит как массив в моей памяти.

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

вы можете выполнить горячую кодировку внутри своей модели:

X = np.asarray([1,2,3,4,4,4,4,5])

inp = Input((1,), dtype='int32')
x = Lambda(lambda x: tf.one_hot(x[:,0], len(set(X))))(inp)
out = Dense(20)(x)

model = Model(inp,out)
model.compile('adam','mse')
print(model.summary())

model.fit(X, np.random.uniform(0,1, (len(X),20)), epochs=3)
0 голосов
/ 06 мая 2020

API Keras предоставляет метод to_categorical (), который можно использовать для быстрого кодирования целочисленных данных. Если целочисленные данные представляют все возможные значения классов, то метод to_categorical () можно использовать напрямую; в противном случае количество классов можно передать методу в качестве параметра num_classes.

Фрагмент кода ниже иллюстрирует использование метода to_categorical ():

import numpy as np
from keras.utils import to_categorical
### Categorical data to be converted to numeric data
colors = ["red", "green", "yellow", "red", "blue"]

### Universal list of colors
total_colors = ["red", "green", "blue", "black", "yellow"]

### map each color to an integer
mapping = {}
for x in range(len(total_colors)):
  mapping[total_colors[x]] = x

# integer representation
for x in range(len(colors)):
  colors[x] = mapping[colors[x]]

one_hot_encode = to_categorical(colors)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...