Набор данных заставляет меня чувствовать себя сумасшедшим.какая структура похожа на эту:
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
Мне нужна помощь о том, как работать с таким набором данных иликонсультации по проектированию сети.Спасибо