首页 > 解决方案 > TypeError:('关键字参数不理解:','掩码')

问题描述

我想创建 LSTM 网络,它可以将两个输入作为填充序列数组作为输入,将掩码数组作为掩码输入。我编写了如下代码:

def create_model():

#input 1 (pad sequence)
input_layer1 = Input(shape=(17640,1),name = 'input_layer')

#input 2 (mask)
input_layer2 = Input(shape=(17640,),name='input_mask')

#LSTM layer
LSTM_layer = LSTM(25,return_sequences=False,name = 'LSTM_layer',mask = input_layer2)(input_layer1)

#Dense layer
dense = Dense(50,activation='relu',kernel_initializer=he_normal(),kernel_regularizer=l2(0.0001),name = 'dense')(LSTM_layer)

#output layer
dense_1 = Dense(10, activation = 'softmax',name='dense_1')(dense)

#concat = concatenate([input_layer,input_mask])

model = Model([input_layer1],dense_1)

#compile
model.compile(loss='categorical_crossentropy', optimizer=keras.optimizers.Adam(lr=0.001,decay = 1e-4),metrics=[tf.keras.metrics.AUC()])

return model

但我收到错误:TypeError: ('Keyword argument not understand:', 'mask') 查看错误的详细信息,它说它收到了未知的关键字参数。我还研究了类似类型的错误,即在这些情况下关键字不同。解决方案是针对问题的。有人可以帮我解决这个错误吗

标签: tensorflowlstm

解决方案


mask参数不是构造函数的参数,它是一个调用参数,应该有维度[batch, timestamps]。这是一个调用参数,因为掩码在运行之间可能不同。换句话说,它应该是这样的:

LSTM_layer = LSTM(25, return_sequences=False, name = 'LSTM_layer')(input_layer1, mask = input_layer2)

推荐阅读