型号:
sequence_input = Input(shape=(MAX_SENT_LENGTH,), dtype='int32')
words = embedding_layer(sequence_input)
h_words = Bidirectional(GRU(200, return_sequences=True,dropout=0.2,recurrent_dropout=0.2))(words)
sentence = Attention()(h_words) #with return true
#sentence = Dropout(0.2)(sentence)
sent_encoder = Model(sequence_input, sentence[0])
print(sent_encoder.summary())
document_input = Input(shape=(None, MAX_SENT_LENGTH), dtype='int32')
document_enc = TimeDistributed(sent_encoder)(document_input)
h_sentences = Bidirectional(GRU(100, return_sequences=True))(document_enc)
preds = Dense(7, activation='softmax')(h_sentences)
model = Model(document_input, preds)
使用的注意层: https://gist.github.com/cbaziotis/6428df359af27d58078ca5ed9792bd6d 与return_attention = True
训练模型后,如何可视化新输入的注意力权重。
我正在尝试:
get_3rd_layer_output = K.function([model.layers[0].input,K.learning_phase()],
[model.layers[1].layer.layers[3].output])
并传递新的输入,但这给了我错误。
可能的原因: model.layers()只给我最后一层。我希望从时间分布部分获得权重。
答案 0 :(得分:0)
您可以使用以下内容显示模型中的所有图层:
print(model.layers)
一旦您知道“时间分布”层是哪个索引号,例如3,然后使用以下命令获取配置和层权重。
g = model_name.layers[3].get_config()
h = model_name.layers[3].get_weights()
print(g)
print(h)