Não é possível conectar Lambda Camada em Keras diretamente para achatar Camada sem uma exceção. Por quê?

votos
0

Sistema:

  • Keras 1.0.1
  • Theano 0.8.2

Eu tenho uma função muito simples:

from keras import backend as kback

def ave_embed(xval):
    return kback.mean(xval, axis=1)

Eu estou usando isso em um Keras LambdaCamada seguido por uma Flattencamada:

model.add(Lambda(ave_embed, output_shape=(d, 1)))
model.add(Flatten())

No entanto, quando eu compilar o modelo, eu recebo o seguinte erro:

Exception: Input 0 is incompatible with layer flatten_1: expected ndim >= 3, found ndim=2

Eu corrigi-lo fazendo o seguinte:

model.add(Lambda(ave_embed, output_shape=(d, 1)))
model.add(Reshape(d,1))
model.add(Flatten())

Alguém pode explicar a causa da exceção? Parece que eu estou aplicando remodelar em uma saída que já deve ser essa forma.

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


1 respostas

votos
0

Parece que eu estou aplicando remodelar em uma saída que já deve ser essa forma.

Você está certo!

Se você tem uma entrada 3d e tirar a média do outro lado da segunda dimensão ( kback.mean(xval, axis=1)) sua Lambdacamada vontade saída que um tensor 2d.

Para a sua combinação de Lambdacamada e Flattencamada de trabalhar, você deve ter pelo menos uma entrada de 4D.

Você apenas tem que remover seu Flattencamada para fazê-lo funcionar. Adicionando uma Reshapecamada e uma dimensão faz seu tensor de entrada de sua Flattencamada 3D, mas com uma dimensão desnecessária que você achatar logo depois.

Respondeu 04/05/2016 em 19:52
fonte usuário

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