输入具有重塑图层的密集图层时的Keras错误

时间:2018-08-27 00:25:59

标签: python keras lstm

我正在尝试实现一个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)])

任何人都可以提供帮助,谢谢!

0 个答案:

没有答案
相关问题