Я пытаюсь тренировать уровень персонажа 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количество классов.
Я не могу поместить весь набор данных в память.