2017-03-23 2 views
7

je reçois l'erreur suivante pour l'extrait de code ci-dessous:erreur Keras « Vous devez nourrir une valeur pour tenseur d'espace réservé « bidirectional_1/keras_learning_phase » avec DTYPE bool »

Vous devez nourrir une valeur pour tenseur d'espace réservé ' bidirectional_1/keras_learning_phase » avec DTYPE bool

Si j'ajoute la couche d'abandon model.add(Dropout(dropout)), cela fonctionne. Quelqu'un sait pourquoi? Le back-end est Tensorflow, Keras 2.0.1

def prep_model1(embedding_layer1, embedding_layer2, dropout=0.5): 

    model0 = Sequential() 
    model0.add(embedding_layer1) 
    model0.add(Bidirectional(LSTM(128, return_sequences=False, dropout=dropout))) 

    model1 = Sequential() 
    model1.add(embedding_layer2) 
    model1.add(Bidirectional(LSTM(128, return_sequences=False, dropout=dropout))) 

    model = Sequential() 
    model.add(Merge([model0, model1], mode='concat', concat_axis=1)) 
    #model.add(Dropout(dropout)) 
    model.add(Dense(1, activation='sigmoid')) 

    return model 

Répondre

16

Essayez d'importer K et de définir la phase d'apprentissage avant votre modèle.

from keras import backend as K 

K.set_learning_phase(1) #set learning phase 

De this issue

+0

u r un génie .... –

+0

cela a fonctionné, je vous remercie beaucoup –

+0

Important: utiliser avant la construction du modèle. Aussi pour BatchNorm. – ikamen