Я пытаюсь обучить CNN уровня персонажа, используя Keras. Я принимаю в качестве входных данных одно слово. Я уже преобразовал слова в списки индексов, но когда я пытаюсь передать их в one_hot
, я получаю TypeError
.
>>> X_train[0]
array([31, 14, 23, 29, 27, 18, 12, 30, 21, 10, 27, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=uint8)
>>> X_train.shape
(2226641, 98)
Но когда я пытаюсь создать свою модель следующим образом:
k_model = Sequential()
k_model.add(Lambda(K.one_hot, arguments={'num_classes': 100}, input_shape=(98,), output_shape=(98,100)))
k_model.add(Conv1D(filters=16, kernel_size=5, strides=1, padding='valid'))
Я получаю TypeError: Value passed to parameter 'indices' has DataType float32 not in list of allowed values: uint8, int32, int64
.
Очевидно, что он не доходит до того момента, когда X_train даже читается, так где же он получает значение с плавающей запятой?
Я хотел бы иметь форму экземпляра (98, 100)
, где 100 — количество классов.
Я не могу уместить весь набор данных в памяти.