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

时间:2018-06-11 07:08:15

标签: python tensorflow recurrent-neural-network

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

它可以正确预测,但除了预测之外,我怎么知道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'])

1 个答案:

答案 0 :(得分:1)

This post on GitHub提出了一种在打印时查看参数名称的方法:

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