【发布时间】:2018-06-30 16:33:43
【问题描述】:
我学习 ML,我使用开源 (blstm),我想添加一个 argsort 层,但 keras 没有 argsort 层。
我搜索了这个问题,有人说使用 Lambda 函数。 (我使用 TensorFlow 后端) 但我不知道如何定义函数以及如何使用它。
这是原始代码:
tagger = Dropout(self.dropout_ratio)(tagger)
prediction = TimeDistributed(Dense(self.output_vocab_size,
activation='softmax'))(tagger)
self.model = Model(input=raw_current, output=prediction)
self.model.compile(loss='categorical_crossentropy', optimizer=opt_func)
预测形状为 (?,48,224)。
训练后,当我测试这个模型时,我想从预测[0][-1]中得到一个top_10索引,所以我使用了一些排序代码。
这是我的测试代码。
prediction = self.model.predict(test_batch_data)
my_prediction = prediction[0][-1]
top10_my_prediction_idx = sorted(range(len(rule_prediction)), key=lambda k: rule_prediction[k] , reverse=True)[0:10]
当我训练模型时,我想在预测层之后添加一个 get_top_10 层。
喜欢这个:
tagger = Dropout(self.dropout_ratio)(tagger)
prediction = TimeDistributed(Dense(self.output_vocab_size, activation='softmax'))(tagger)
**top10_prediction = Lambda(get_top10_prediction)**
self.model = Model(input=raw_current, output=prediction)
self.model.compile(loss='categorical_crossentropy', optimizer=opt_func)
如何定义 Lambda 函数以及如何使用它?
【问题讨论】:
标签: sorting lambda keras keras-layer