AttributeError:“节点”对象在Keras中没有属性“ output_masks”

时间:2019-12-05 04:55:52

标签: python tensorflow machine-learning keras neural-network

我想在我的Dropout模型中添加一个CNN层,如下所示(以黄色突出显示):

inputs_1 = keras.Input(shape=(10081,1))

layer1 = Conv1D(64,14)(inputs_1)
layer2 = layers.MaxPool1D(5)(layer1)
layer3 = Conv1D(64, 14)(layer2)   
layer4 = layers.GlobalMaxPooling1D()(layer3)

inputs_2 = keras.Input(shape=(84,))             
layer5 = layers.concatenate([layer4, inputs_2])
layer6 = Dense(128, activation='relu')(layer5)
  

layer6.add(Dropout(0.25))(已屏蔽)

layer7 = Dense(2, activation='softmax')(layer6)

model_2 = keras.models.Model(inputs = [inputs_1, inputs_2], output = [layer7])
model_2.summary()

它返回

  

AttributeError:“节点”对象没有属性“输出掩码”

我想可能是我使用了Kerastf.keras,但我不确定。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码执行此操作。当您使用keras功能性API时。您应该通过提供输入和输出

来自行添加辍学层
layer6=Dropout(0.25)(layer6)

在上面的代码行中,我将layer6用作退出层的输入,并将其结果保存到同一layer6。当您使用keras顺序API时,应该使用layer6.add(),而不是用于功能性API。

下面给出了完整的更新代码。

inputs_1 = keras.Input(shape=(10081,1))

layer1 = Conv1D(64,14)(inputs_1)
layer2 = layers.MaxPool1D(5)(layer1)
layer3 = Conv1D(64, 14)(layer2)   
layer4 = layers.GlobalMaxPooling1D()(layer3)

inputs_2 = keras.Input(shape=(84,))             
layer5 = layers.concatenate([layer4, inputs_2])
layer6 = Dense(128, activation='relu')(layer5)
layer6=Dropout(0.25)(layer6)

layer7 = Dense(2, activation='softmax')(layer6)

model_2 = keras.models.Model(inputs = [inputs_1, inputs_2], output = [layer7])
model_2.summary()