当前位置:  开发笔记 > 开发工具 > 正文

Keras错误"您必须使用dtype bool为占位符张量'bidirectional_1/keras_learning_phase'提供值"

如何解决《Keras错误"您必须使用dtypebool为占位符张量'bidirectional_1/keras_learning_phase'提供值"》经验,为你挑选了1个好方法。

我在下面的代码段中收到以下错误:

您必须使用dtype bool为占位符张量'bidirectional_1/keras_learning_phase'提供值

如果我添加了dropout图层model.add(Dropout(dropout)),它就可以了.谁知道为什么?后端是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

vega.. 29

尝试导入K并在模型之前设置学习阶段.

from keras import backend as K

K.set_learning_phase(1) #set learning phase

从这个问题



1> vega..:

尝试导入K并在模型之前设置学习阶段.

from keras import backend as K

K.set_learning_phase(1) #set learning phase

从这个问题


重要:在构建模型之前使用它.也适用于BatchNorm.
据说[这里](https://github.com/tensorflow/tensorflow/issues/11336#issuecomment-315898065):_"学习阶段"是一个标志,表示训练/推理.使用例如`fit`时设置为1,使用例如`predict`时设置为0.`K.set_learning_phase(False)`将"学习阶段"设置为始终为0,即`fit`将使模型在推理模式下运行(例如,没有丢失和BatchNorm行为设置为推理)._
推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有