記憶ニューラルネットワーク

記憶ニューラルネットワーク

元の画像は次のようになります

ひづめの部分はこのように見えることがわかります

写真がこんな感じになったので、わかりやすくなりました。(もちろん、それは単層の実現にすぎません)
ここに画像の説明を挿入

kerasの実装は次のとおりです。

		input_base = layers.Input(shape=(self.sent_len*5,))
        input_question = layers.Input(shape=(self.sent_len,))

        x_base_embeding = layers.Embedding(input_dim=self.word_dic_len, output_dim=self.embeding_len)(input_base)
        x_q_embeding = layers.Embedding(input_dim=self.word_dic_len, output_dim=self.embeding_len)(input_question)

        x_base = layers.Bidirectional(layers.LSTM(units=self.unit_len, return_sequences=True))(x_base_embeding)
        x_q = layers.Bidirectional(layers.LSTM(units=self.unit_len, return_sequences=True))(x_q_embeding)

        x_base2 = layers.Bidirectional(layers.LSTM(units=15 ,return_sequences=True))(x_base_embeding)

        w2w_dot = layers.dot([x_base, x_q], axes=(2,2))
        w2w_dot_soft = layers.Dense(activation="softmax", units=30)(w2w_dot)

        base_sum = layers.add([x_base2, w2w_dot_soft])
        base_sum = layers.Permute((2,1))(base_sum)
        total = layers.concatenate([base_sum, x_q], axis=-1) #转换

        predict_lstm = layers.Bidirectional(layers.LSTM(units=128))(total)

        predict = layers.Dense(units=self.class_num, activation="softmax")(predict_lstm)

        model = Model([input_base, input_question], predict)
        model.compile(optimizer='rmsprop', loss='categorical_crossentropy',
                      metrics=['accuracy'])
        model.summary()

概要:
メモリネットワークは、QAまたは分類のフレームワークと見なすことができます。

おすすめ

転載: blog.csdn.net/cyinfi/article/details/84789562