【发布时间】:2020-02-21 16:25:59
【问题描述】:
我有一个仅包含 500 个样本的数据集。数据集有三列
- 句子1
- 句子2
- 0 或 1(表示相似性)。
我的任务是训练一个以两个句子作为输入的编码器,如果句子相似则返回 1,否则返回 0。
我使用预训练的 word2vec 嵌入来提取特征。我的模型只达到了 50% 的准确率。
sent_in = Input(shape=(150, ))
sent_emb = Embedding(input_dim=vocab_size, output_dim=300, weights=[E],)(sent_in)
conv1 = Conv1D(32, 5, activation='relu', padding='same')(sent_emb)
pool1 = MaxPooling1D(2)(conv1)
conv2 = Conv1D(64, 5, activation='relu', padding='same')(pool1)
pool2 = MaxPooling1D(2)(conv2)
conv3 = Conv1D(128, 5, activation='relu', padding='same')(pool2)
flat1 = Flatten()(conv3)
sent_in2 = Input(shape=(150, ))
sent_emb2 = Embedding(input_dim=vocab_size, output_dim=300, weights=[E],)(sent_in2)
conv4 = Conv1D(32, 5, activation='relu', padding='same')(sent_emb2)
pool3 = MaxPooling1D(2)(conv4)
conv5 = Conv1D(64, 5, activation='relu', padding='same')(pool3)
pool4 = MaxPooling1D(2)(conv5)
conv6 = Conv1D(128, 5, activation='relu', padding='same')(pool4)
flat2 = Flatten()(conv6)
concatenated = concatenate([flat1, flat2])
dense1 = Dense(32, activation='relu')(concatenated)
out = Dense(1, activation='sigmoid')(dense1)
model = Model(inputs=[sent_in,sent_in2], outputs=out)
model.summary()
我的网络如下图所示
问题:
1) 每个自动编码器都必须有一个编码器和一个解码器吗?
2) 我怎样才能提高我的准确性?
【问题讨论】:
标签: python tensorflow keras word2vec autoencoder