我正在尝试实现一个lstm模型,该模型处理100个文本,然后将它们连接在一起以提供给密集的层。但是会出现错误,是:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
代码显示如下:
from keras.layers import Embedding, Dense, LSTM, Masking, concatenate, Flatten, Activation, RepeatVector, Permute, Multiply, Lambda, TimeDistributed, Reshape
from keras import Input, Model
from keras import backend as K
lstm = LSTM(100)
embd = Embedding(1000, 128)
dense = Dense(1, activation='tanh')#(lstm_outputs)
inputs = []
outputs = []
for _ in range(2):
encoder_inputs = Input(shape=(160,))
print(encoder_inputs.shape)
masked_outputs = Masking(0)(encoder_inputs)
encoder_embd = embd(masked_outputs)
print(encoder_embd.shape)
lstm_outputs = lstm(encoder_embd)
attention = dense(lstm_outputs)
attention = Activation('softmax')(attention)
attention = RepeatVector(100)(attention)
attention = Permute([2, 1])(attention)
utterance_representation = Multiply()([lstm_outputs, attention])
print(utterance_representation.shape)
utterance_representation = K.squeeze(utterance_representation,axis=1)
utterance_outputs = K.reshape(utterance_representation, [-1, K.shape(utterance_representation)[0]*K.shape(utterance_representation)[1]])
encoder_outputs = Dense(200, activation='relu')(utterance_outputs)
model_outputs = Dense(1, activation='softmax')(encoder_outputs)
inputs.append(encoder_inputs)
outputs.append(model_outputs)
encoder_outputs = Dense(200, activation='relu')(outputs_one)
model_outputs = Dense(1, activation='softmax')(encoder_outputs)
model = Model(input=inputs, output=outputs)
model.compile(optimizer='rmsprop', loss='mse', metrics=['accuracy'])
model.fit_generator(feed_generator('data.h5'), steps_per_epoch=250, epochs=1, verbose=1, callbacks=[EarlyStopping(monitor='val_loss', patience=4)])
任何人都可以提供帮助,谢谢!