【发布时间】:2017-07-09 03:05:16
【问题描述】:
我有两个人之间进行各种对话的数据。每个句子都有某种类型的分类。我正在尝试使用 NLP 网络对对话的每个句子进行分类。我尝试了一个卷积网络并获得了不错的结果(不是开创性的)。我想,既然这是一个来回的对话,LSTM 网络可能会产生更好的结果,因为之前所说的可能会对后面的内容产生很大的影响。
如果我遵循上面的结构,我会假设我在做多对多。我的数据看起来像。
X_train = [[sentence 1],
[sentence 2],
[sentence 3]]
Y_train = [[0],
[1],
[0]]
已使用 word2vec 处理数据。然后我按如下方式设计我的网络..
model = Sequential()
model.add(Embedding(len(vocabulary),embedding_dim,
input_length=X_train.shape[1]))
model.add(LSTM(88))
model.add(Dense(1,activation='sigmoid'))
model.compile(optimizer='rmsprop',loss='binary_crossentropy',
metrics['accuracy'])
model.fit(X_train,Y_train,verbose=2,nb_epoch=3,batch_size=15)
我假设此设置将一次输入一批句子。但是,如果在 model.fit 中,shuffle 不等于 false,它接收的随机批次,那么为什么 LSTM 网络在这种情况下甚至有用呢?从对该主题的研究来看,要实现多对多结构,也需要更改 LSTM 层
model.add(LSTM(88,return_sequence=True))
输出层需要...
model.add(TimeDistributed(Dense(1,activation='sigmoid')))
切换到此结构时,输入大小出现错误。我不确定如何重新格式化数据以满足此要求,以及如何编辑嵌入层以接收新的数据格式。
任何意见将不胜感激。或者,如果您对更好的方法有任何建议,我非常乐意听到!
【问题讨论】:
标签: python neural-network nlp keras lstm