簡體   English   中英

Monte Carlo Dropout 作為 tf.keras.Model 的子類實現

[英]Monte Carlo Dropout implemented as subclass of tf.keras.Model

我知道可以通過多次調用model.predict()並測量返回值的平均值來實現蒙特卡洛丟失。 但是,我想知道是否可以通過子類化 tensorflow.keras 的Model s tensorflow.keras來實現它?

通過子類化Model和 class 使用更典型的模型實現方式,支持輕松加載和保存 Keras 模型,無需任何其他代碼,然后在運行時調用predict (一次)。 這在使用 Tensorflow 服務時可能特別有用,但在通過其他一些 Python 腳本加載它時也已經增加了一些舒適度。 (例如,比較多個不同的模型時。)

我相信這個示例代碼應該有效:

class MonteCarloDropout(tf.keras.layers.Dropout):

    def __init__(self, rate):
        super(MonteCarloDropout, self).__init__()
        self.rate = rate

    def call(self, inputs):
        return super().call(inputs, training=True)

然后你可以使用這個層作為你的 model 中的任何層..

...  
model.add(MonteCarloDropout(rate=0.2))  # just example... model is some Sequential model... could be anything...

...

我希望這有幫助!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM