rotulagem sequência em Keras

votos
4

Eu estou trabalhando em problema rotulagem sentença. Eu fiz a incorporação e estofamento por mim e minhas entradas parecido:

X_i = [[0,1,1,0,2,3...], [0,1,1,0,2,3...], ..., [0,0,0,0,0...],  [0,0,0,0,0...], ....]

Para cada palavra na frase que eu quero prever uma de quatro classes, por isso a minha saída desejada deve ser parecido:

Y_i = [[1,0,0,0], [0,0,1,0], [0,1,0,0], ...]

Meu arquitetura de rede é simples:

model = Sequential()

model.add(LSTM(input_shape = (emb,),input_dim=emb, output_dim=hidden, return_sequences=True))
model.add(TimeDistributedDense(output_dim=4))
model.add(Activation('softmax'))
    model.compile(loss='binary_crossentropy', optimizer='adam')

model.fit(X_train, Y_train, batch_size=32, nb_epoch=3, validation_data=(X_test, Y_test), verbose=1, show_accuracy=True)

Ele mostra cerca de 95% durante o treinamento, mas quando eu estou tentando prever novas frases usando os resultados do modelo treinados são realmente ruim. Parece modelo aprendeu apenas algumas classes para primeiras palavras e mostra que cada vez. Acho que o problema pode é:

  1. Escrito por mim preenchimento (zero vetores no final da frase), ele pode tornar o aprendizado pior?

  2. Eu deveria tentar aprender frases de comprimento diferente, sem preenchimento (se sim, você pode me ajudar como trem tal tipo de um modelo em Keras?)

  3. objetivo errado de aprendizagem, mas eu tentei erro quadrado médio, entropia cruzada binário e outros, isso não muda.

  4. Algo com TimeDistributedDensee softmax, penso eu, que tenho como ele funciona, mas ainda não é 100% de certeza.

Eu estarei contente de ver qualquer dica ou ajuda em relação a este problema, obrigado!

Publicado 23/01/2016 em 15:36
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Eu pessoalmente acho que você não entendeu o que "rotulagem sequência" significa.

Você quer dizer:

  1. Xé uma lista de frases, cada elemento X[i]é uma sequência de palavras de comprimento arbitrário?
  2. Y[i]é a categoria de X[i], ea uma forma quente de Y[i]uma [0, 1, 0, 0]matriz como?

Se for, então não é um problema rotulagem seqüência, é um problema de classificação.

Não use TimeDistributedDense, e se é um problema de classificação multi-classe, ou seja, len(Y[i]) > 2e use " categorical_crossentropy" em vez de " binary_crossentropy"

Respondeu 30/12/2016 em 09:12
fonte usuário

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