Как спроектировать структуру сети, которая может вместить множество данных для одного? - PullRequest
0 голосов
/ 29 ноября 2018

Набор данных заставляет меня чувствовать себя сумасшедшим.какая структура похожа на эту:

A    B
1    x
2    x
3    x
4    y
5    y
6    y
7    y

Я хочу использовать этот набор данных для обучения классификатора.В этом наборе есть два столбца: A и B. Все данные из A разные, но B противоположен.У меня 5000 разные А и 5 разные б.Поэтому, когда я пытаюсь подогнать этот набор данных с помощью NN, сеть видит только столбец B, что приводит к низким соотв.(Я получил 85% в соответствии только с использованием столбца A, но столбец B также содержит много ценной информации) Моя структура сети на данный момент:

def build_matching_model(opts, vocab_size=0, ew=None):
    N, L = opts.max_sents, opts.max_len
    logger.info(
        "params: max_sentlen = %d, embedding dim = %s, nbfilters = %s, filter1_len = %s, dropout rate = %s" % (
            opts.max_len, opts.embedding_dim, opts.lstm_units, opts.filter1_len, opts.dropout))
    if ew is None:
        embed = Embedding(vocab_size, opts.embedding_dim, input_length=N * L, mask_zero=True, name='embed')
    else:
        embed = Embedding(ew.shape[0], ew.shape[1], weights=[ew], input_length=N * L, mask_zero=True, name='embed')

    zme = ZeroMaskedEntries(name='maskedout')
    resh = Reshape((N, L, opts.embedding_dim), name='resh_W')
    zcnn = TimeDistributed(Conv1D(opts.nbfilters, opts.filter1_len, padding='valid'), name='zcnn')

    att = TimeDistributed(AttLayer(), name='avg_zcnn')
    dropout = Dropout(opts.dropout, name='dropout')
    bilstm = Bidirectional(LSTM(opts.hidden_units, return_sequences=True, name='lstm'))
    output_layer = Dense(units=3, name='output_layer')

    in_a = Input(shape=(N * L,), dtype='int32', name='in_a')
    in_b = Input(shape=(N * L,), dtype='int32', name='in_b')
    a_maskedout, b_maskedout = zme(embed(in_a)), zme(embed(in_b))
    a_resh, b_resh = resh(a_maskedout), resh(b_maskedout)
    a_cnn, b_cnn = zcnn(dropout(a_resh)), zcnn(dropout(b_resh))  # (S W V)
    a_att, b_att = att(a_cnn), att(b_cnn)  # (S V)
    a_feat, b_feat = bilstm(a_att), bilstm(b_att)
    aoa_feat = AoA(name='AOA')([a_feat, b_feat])
    output = output_layer(aoa_feat)
    model = Model(inputs=[in_a, in_b], outputs=output)
    optimizer = SGD()
    model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['acc'])

    return model

Мне нужна помощь о том, как работать с таким набором данных иликонсультации по проектированию сети.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...