Akh*_*esh 14 machine-learning neural-network deep-learning keras keras-layer
我在keras的神经网络模型中使用dropout.一点点代码就好
model.add(Dropout(0.5))
model.add(Dense(classes))
Run Code Online (Sandbox Code Playgroud)
为了测试,我正在使用preds = model_1.predict_proba(image).
但是,虽然测试Dropout也参与预测不应该发生的分数.我搜索了很多来禁用丢失但是没有得到任何提示.
有人有解决方案在keras测试时禁用Dropout吗?
如前所述,Keras中的丢失仅在训练时发生(在训练期间具有相应的权重调整,使得学习的权重适合于在禁用丢失时的预测).
对于我们希望使用辍学NNET作为概率预测器(当要求重复预测相同输入时产生分布)的情况,这并不理想.换句话说,Keras的Dropout图层旨在为您提供训练时的正规化,但是在预测时是学习分布的"平均函数".
如果你想保留预测的辍学率,你可以轻松实现永久性辍学("PermaDropout")层(这是基于F. Chollet在Keras的GitHub讨论区提出的建议):
from keras.layers.core import Lambda
from keras import backend as K
def PermaDropout(rate):
return Lambda(lambda x: K.dropout(x, level=rate))
Run Code Online (Sandbox Code Playgroud)
通过使用"PermaDropout"替换Keras模型中的任何丢失层,您也将获得预测中的概率行为.
# define the LSTM model
n_vocab = text_to_train.n_vocab
model = Sequential()
model.add(LSTM(n_vocab*4,
input_shape=input_shape,
return_sequences=True))
# Replace Dropout with PermaDropout
# model.add(Dropout(0.3)
model.add(PermaDropout(0.3))
model.add(LSTM(n_vocab*2))
# Replace Dropout with PermaDropout
# model.add(Dropout(0.3)
model.add(PermaDropout(0.3))
#model.add(Dense(n_vocab*2))
model.add(Dense(n_vocab, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
要激活推理时间的 dropout,您只需training=True在感兴趣的层中指定(Dropout在我们的例子中):
和training=False
inp = Input(shape=(10,))
x = Dropout(0.3)(inp, training=False)
x = Dense(1)(x)
m = Model(inp,x)
# m.compile(...)
# m.fit(...)
X = np.random.uniform(0,1, (1,10))
output = []
for i in range(0,100):
output.append(m.predict(X)) # always the same
Run Code Online (Sandbox Code Playgroud)
和training=True
inp = Input(shape=(10,))
x = Dropout(0.3)(inp, training=True)
x = Dense(1)(x)
m = Model(inp,x)
# m.compile(...)
# m.fit(...)
X = np.random.uniform(0,1, (1,10))
output = []
for i in range(0,100):
output.append(m.predict(X)) # always different
Run Code Online (Sandbox Code Playgroud)
默认情况下,训练设置为 False
这是推理时使用 dropout 的完整示例
| 归档时间: |
|
| 查看次数: |
12673 次 |
| 最近记录: |