鏈結是這個
自我總結先寫前面,我認為蒙特卡洛dropout首先肯定是測試的時候也開著dropout,然後就是測試n次的測試集,然後求n次的輸出概率的平均值,得到不確定性,以此再取沿軸的最大值;
普通的softmax在測試時候的dropout是關閉著的。就是直接乙個測試就乙個輸出,然後直接取沿軸最大值當作輸出、
(x_train, y_train)
,(x_test, y_test)
= keras.datasets.mnist.
load_data()
model = keras.models.
sequential()
model.
add(keras.layers.
flatten
(input_shape=(28
,28))
)model.
add(keras.layers.
dropout
(0.25))
model.
add(keras.layers.
dense
(300
, activation=
"relu"))
model.
add(keras.layers.
dropout
(0.25))
model.
add(keras.layers.
dense
(300
, activation=
"relu"))
model.
add(keras.layers.
dropout
(0.25))
model.
add(keras.layers.
dense(10
, activation=
"softmax"))
optimizer = keras.optimizers.
nadam
(lr=
0.001
)model.
compile
(loss=
"sparse_categorical_crossentropy"
, optimizer=optimizer, metrics=
["accuracy"])
model.
fit(x_train, y_train, epochs=50)
model.
evaluate
(x_test, y_test)
可以生成任意數量的**,就是說可以**任意多次
def predict_proba
(x, model, num_samples)
: preds =
[model
(x, training=true)
for _ in range
(num_samples)
]return np.
stack
(preds)
.mean
(axis=0)
def predict_class
(x, model, num_samples)
: proba_preds =
predict_proba
(x, model, num_samples)
return np.
argmax
(proba_preds, axis=
1)
y_pred =
predict_class
(x_test, model,
100)
acc = np.
mean
(y_pred == y_test)
由以上**可以看出,先弄num_samples次**,然後取平均值,然後再沿著某一軸取最大值,即可得到比原來好的**效果。
y_pred_proba =
predict_proba
(x_test, model,
100)
softmax_output = np.
round
(model.
predict
(x_test[1:
2]),
3)mc_pred_proba = np.
round
(y_pred_proba[1]
,3)print
(softmax_output, mc_pred_proba)
softmax_output:[0.
0.1.
0.0.
0.0.
0.0.0.]
mc_pred_proba:[0.
0.0.989
0.008
0.001
0.0.
0.001
0.0010.]
softmax_output: [
0.0.
1.0.
0.0.
0.0.
0.0.][
0.0.
1.0.
0.0.
0.0.
0.0.
] mc_pred_proba: [
0.0.
0.989
0.008
0.001
0.0.
0.001
0.0010.]
[0.0.0.989
0.008
0.001
0.0.
0.001
0.001
0.]
蒙特卡洛理解
蒙特卡羅演算法並不是一種演算法的名稱,而是是一類隨機方法的統稱。這類方法的特點是,可以在隨機取樣上計算得到近似結果,隨著取樣的增多,得到的結果是正確結果的概率逐漸加大,但在 放棄隨機取樣,而採用類似全取樣這樣的確定性方法 獲得真正的結果之前,無法知道目前得到的結果是不是真正的結果。從特性特性來說,我...
蒙特卡洛演算法
從今天開始要研究sampling methods,主要是mcmc演算法 contents 1.蒙特卡洛介紹 2.蒙特卡洛的應用 3.蒙特卡洛積分 1.蒙特卡洛介紹 蒙特卡羅方法 monte carlo method 也稱統計模擬方法,是二十世紀四十年代中期由於科學技術的 發展和電子計算機的發明,而被...
蒙特卡洛取樣
1.馬爾可夫鏈及其平穩分布 馬爾可夫鏈的定義很簡單,即後乙個狀態只與前面乙個狀態相關 p x t x cdots,x p x t x 2.馬氏鏈定理 如果乙個非週期馬爾可夫鏈具有狀態轉移矩陣 p 且它的任意兩個狀態都是連通的,那麼 mathop limits p n 存在且與 i 無關,記 math...