我正试图预测给病人服用的药物。对于每一种药物,我都有一列预测(通过softmax),表示病人得到这种药物的可能性。
但很明显,人们可以一次得到几种药物,所以我有另一个模型,试图预测不同药物的数量。
我想在一个TensorFlow调用中对它们进行评估(我目前有一堆缓慢的NumPy攻击),但是我不能向tensorflow.nn.top_k
传递一个k
的数组(每个病人一个,即行),只有一个固定的整数--因为不同的病人将得到不同的药物数量,这是行不通的。
最终,我试图在实际处方的药物指标和预测的指标之间进行tensorflow.list_diff
。然后也许是它的tensorflow.size
。
tensorflow.list_diff(
tensorflow.where( # get indices of medications
tensorflow.equal(medication_correct_answers, 1) # convert 1 to True
),
tensorflow.nn.top_k( # get most likely medications
medication_soft_max, # medication model
tensorflow.argmax(count_soft_max, 1) # predicted count
)[1] # second element are the indices
)[:, 0] # get unmatched medications elements
额外的问题:是否有可能直接训练一个模型,而不是两个独立的交叉熵?在我看来,这并不是真正的可有可无的--或者仅仅是底层的软基需要可资区分吗?
发布于 2015-12-14 16:59:29
预测列表的长度确实是不可微的。您需要向预测列表长度的模型中添加一个额外的softmax输出,或者添加多个sigmoid输出来预测应该包括哪些条目。
我写了一篇关于从图像中转录可变长度文本序列的论文,附录中详细介绍了数学如何工作的一个示例:http://arxiv.org/abs/1312.6082。
https://stackoverflow.com/questions/34247661
复制相似问题