Ошибки Tensorflow / Keras LSTM «Стек вызовов функций: распределенная_функция» - PullRequest
1 голос
/ 03 августа 2020

Я использую сложенный LSTM для классификации нескольких классов, где у меня есть 5 «строковых» меток. Вот фрагмент кода:

# define parameters
#epochs, batch_size = 20, 46

epochs, batch_size = 5, 40
# define model
model = Sequential()
model.add(LSTM(128,input_shape=(X_train.shape[1],X_train.shape[2]),return_sequences=True))
model.add(LSTM(100, activation='relu',return_sequences=True))
model.add(LSTM(64, activation='relu'))
model.add(Dense(5, activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])
#-------------------------------------------------------------------
history = model.fit(X_train, Y_train, 
                    epochs=epochs, 
                    batch_size=batch_size, 
                    verbose=1)

Я получил эту ошибку:

UnimplementedError:  Cast string to float is not supported
     [[node metrics/accuracy/Cast (defined at C:\Users\"emitted"LSTM.py:152) ]] [Op:__inference_distributed_function_4954348]

Function call stack:
distributed_function

Я знаю, как исправить эту ошибку! Кто-нибудь знает, в чем может быть причина? и как отладить эту ошибку?

1 Ответ

1 голос
/ 03 августа 2020

Похоже, вы пытаетесь передать строковые данные прямо в сеть. Отсюда ошибка Cast string to float is not supported. Если вы имеете дело с категориальными данными, вам следует сначала преобразовать их в числовые. В зависимости от типа используемых вами категориальных данных следует применять разные методы. Если вы ищете текст, прочтите официальное руководство Tensorflow по внедрению . Или, если ваши данные состоят из отдельных токенов, например Toyota, BMW, Ford, проверьте category_encoders .

...