【发布时间】:2020-07-15 07:41:44
【问题描述】:
我有我构建的这个模型,它在 model3.add(graph) 的标题中抛出错误。根据我的阅读和理解,这里的第二个模型model3 期望model3.add(graph) 有两个输入,但它只收到一个。为什么需要2个输入?
我忽略了什么吗?请帮忙?
inputs3 = model.inputs[:2] # We are getting all layers EXCEPT last 2 layers
layer_output3 = model.get_layer('Encoder-12-FeedForward-Norm')).output #this is a layer from a pretrained BERT model
removed_layer = RemoveMask()(layer_output3) #the previous layer contains masks which are not compatible with a CNN layer in Keras
conv_blocks = []
filter_sizes = (2,3,4)
for fx in filter_sizes:
conv_layer = Conv1D(100, kernel_size=fx,
activation= 'softsign'), data_format='channels_first')(removed_layer)
maxpool_layer = MaxPooling1D(pool_size=2)(conv_layer)
flat_layer = Flatten()(maxpool_layer)
conv_blocks.append(flat_layer)
conc_layer = concatenate(conv_blocks, axis=1)
restored_layer = RestoreMask()([conc_layer, layer_output3])
graph = Model(input=inputs3, outputs=restored_layer)
model3 = Sequential()
model3.add(graph)
model3.add(Dropout(0.1))
model3.add(Dense(3, activation='softmax'))
model3.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model3.summary()
【问题讨论】:
标签: python-3.x tensorflow keras conv-neural-network masking