Как я могу ввести два списка в качестве ввода в LSTM после встраивания? - PullRequest
0 голосов
/ 11 января 2020

Скажем, у меня есть два списка [0.1,0.2,0.3] и [0.233,0.112,0.05], и каждый i-й элемент (например, [0.1,0.233], [0.2,0.112], [0.3,0.05], т. Е. на) ВМЕСТЕ должен быть вход в LSTM. Я пробовал:

    inp_a = Input(shape=(36,))
    a = Embedding(9400, 250)(inp_a)
    a = CuDNNLSTM(250)(a)

    inp_b = Input(shape=(36,))
    b = Embedding(951, 250)(inp_b)
    b = CuDNNLSTM(250)(b)

    x = Concatenate()([a, b])    
    x = Dense(9743)(x) 
    x = Activation('softmax')(x)

    model = Model(inputs=[inp_a,inp_b], outputs=x)
    opt = keras.optimizers.adam(lr=0.001)
    model.compile(loss='binary_crossentropy', optimizer=opt,metrics=['accuracy'])

или

    inp_a = Input(shape=(36,))
    a = Embedding(9400, 250)(inp_a)
    a = Flatten()(a)

    inp_b = Input(shape=(36,))
    b = Embedding(951, 250)(inp_b)
    b = Flatten()(b)

    x = Concatenate()([a, b])
    x = Dropout(0.05)(x)
    x = Reshape((1,18432))(x)

    x = LSTM(256, dropout=0.2, recurrent_dropout=0.2) (x)
    x = Activation('relu')(x)
    x = Dropout(0.2)(x)

    x = Dense(9743, kernel_initializer='he_normal')(x)
    x = Activation('softmax')(x)

    model = Model(inputs=[inp_a, inp_b], outputs=x)
    opt = Adam(lr=0.001)
    model.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy'])

Или есть лучший подход? Также выходы одинаковы независимо от входов. Как бороться с этим ..? Thankyou!

...