RNN分类器,如何显示权重以了解neraul网络如何做出决定



我正在使用RNN构建一个简单的分类器,将一段单词分类到不同的目录中。 它有一个嵌入层,然后是RNN,然后是一个密集层,如下所示。

它可以正确预测,但除了预测之外,我怎么知道 RNN 为什么得到这个预测,例如,段落每个单词的权重是多少。

哪些词让RNN相信它属于一个特定的目录?

model = Sequential()
embedding_size = 300
model.add(Embedding(input_dim=num_words+1, output_dim=embedding_size, input_length=max_tokens, name='layer_embedding', weights=embedding_matrix],trainable=True))
return_sequences=True))
model.add(Bidirectional(GRU(32,return_sequences=True)))
model.add(Bidirectional(GRU(32,return_sequences=True)))
model.add(Bidirectional(GRU(32)))
model.add(Dense(numdense, activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])

GitHub上的这篇文章提出了一种在打印参数时查看参数名称的方法:

for e in zip(model.layers[0].trainable_weights, model.layers[0].get_weights()):
print('Param %s:n%s' % (e[0],e[1]))

最新更新