Как решить проблему «не удалось преобразовать строку в число с плавающей точкой» при попытке встроить данные последовательности в модель keras - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу заменить данные последовательности одним символом или строкой и вставить их в мою модель keras.Замена данных последовательности на строку выполняется путем добавления отступов следующим образом.

Моя среда - Python 3.6.7, Tensorflow 1.12.0, Keras 2.2.4.

Форма данных:

x input: (23714, 160), y input: (23714, 7)

Один пример последовательности:

array(['M', 'A', 'S', 'K', 'R', 'A', 'L', 'V', 'I', 'L', 'A', 'K', 'G',
       'L', 'N', 'G', 'K', 'E', 'V', 'A', 'A', 'Q', 'V', 'K', 'A', 'P',
...
       'L', 'V', 'L', 'K'], dtype='<U1')

Я пытался использовать слой Embedding в keras, но произошла следующая ошибка.

ValueError: could not convert string to float: 'I'

Уровень внедрения используется как

Модель:

model = Sequential ()
model.add (InputLayer (input_shape = (160,)))
model.add (Embedding (30000, 160))
model.add (LSTM (160, activation = 'relu'))
model.add (Dense (7, activation = & quot; softmax & quot;))
model.summary ()
model.compile (loss = "categorical_crossentropy", optimizer = "man", metrics = ["accuracy"])
model.fit (x_train, y_train, epochs = 100, batch_size = 100, validation_split = 0.2)
print (model.evaluate (x_test, y_test) [1])

Если я изменю значение 30000 на другое значение, только «I» ошибки изменится на «M» или другую строку.

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

ValueError: could not convert string to float: 'S'

Модель:

model = Sequential ()
model.add (Dense (64, input_shape = (160,), activation = 'relu'))
model.add (Dense (7, activation = & quot; softmax & quot;))
model.summary ()
model.compile (loss = "categorical_crossentropy", optimizer = "man", metrics = ["accuracy"])
model.fit (x_train, y_train, epochs = 100, batch_size = 100, validation_split = 0.2)
print (model.evaluate (x_test, y_test) [1])

Подводя итог, возникает ошибка при попытке вставить данные дополненной последовательности в внедренный или плотный слой.Данные последовательности были преобразованы в массив, и преобразование не было выполнено.

Если я изменяю форму, я получаю следующую ошибку, поэтому сначала я не изменяю форму, но хочу решить проблему встраивания.ValueError: can not reshape array of size 3794240 into shape (23714,1)

Буду очень признателен за вашу помощь.

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