我有一些记录两个人之间对话的数据。每个句子都有某种分类。我试图使用NLP网络对每个句子进行分类。我尝试了卷积网络并获得了不错的结果(虽然没有突破性的)。我想既然这是前后交替的对话,LSTM网络可能会产生更好的结果,因为之前说过的话可能会对接下来的话产生很大影响。
如果我按照上面的结构进行操作,我会认为我正在进行多对多操作。我的数据如下。
数据已使用word2vec进行处理。然后我按以下方式设计了我的网络...
我假设这个设置一次只输入一个句子批。然而,如果在model.fit中shuffle不等于false,则会接收到打乱顺序的批,那么在这种情况下,LSTM网络有什么用处呢?从对该主题的研究来看,要实现多对多结构,需要改变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')))
当切换到这种结构时,我在输入大小上遇到了错误。我不确定如何重新格式化数据以满足此要求,也不知道如何编辑嵌入层以接收新的数据格式。
非常感谢任何帮助!如果您有任何更好的方法或建议,我很乐意听取!