Como preparar dados de entrada para uma regressão LSTM em keras?

votos
1

Eu tenho um conjunto de dados com 5K linhas (-1k para validação) e 17 colunas, incluindo o último (o inteiro alvo rótulo binário).

Meu modelo é simplesmente esta LSTM 2 camadas:

model = Sequential()
model.add(Embedding(output_dim=64, input_dim=17))
model.add(LSTM(32, return_sequences=True))
model.add(Dropout(0.5))
model.add(LSTM(32, return_sequences=False))
model.add(Dense(1))

model.compile(loss='binary_crossentropy', optimizer='rmsprop',
              class_mode='binary')

Depois de carregar o meu conjunto de dados com pandas

df_train = pd.read_csv(train_file)
train_X, train_y = df_train.values[:, :-1], df_train['target'].values

e tentando executar o meu modelo, eu recebo este erro:

Exceção : Ao usar TensorFlow, você deve definir explicitamente o número de Timesteps de suas seqüências. - Se a sua primeira camada é uma incorporação, certifique-se de passá-lo um argumento input_length. Caso contrário, certifique-se a primeira camada tem um input_shape ou argumento batch_input_shape, incluindo o eixo do tempo.

O que devo colocar em input_length? O número de linhas total de?

Desde a minha trama de dados tem uma forma como train_X = (4000, 17) train_y = (4000), como posso prepará-lo para alimentar este tipo de modelo? Eu tenho que mudar minha forma de entrada de dados?

Obrigado por qualquer ajuda!! (=

Publicado 18/03/2016 em 13:46
fonte usuário
Em outras línguas...                            


1 respostas

votos
4

Parece que Keras usa a abordagem estática desenrolamento para construir redes recorrentes (tais como LSTMs) em TensorFlow. A input_lengthdeve ser o comprimento da mais longa sequência que deseja treinar: por isso, se cada linha do seu arquivo CSV train_fileé uma seqüência delimitada por vírgulas de símbolos, deve ser o número de símbolos na linha mais longa.

Respondeu 18/03/2016 em 13:58
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more