改变learning_phase时,Keras的辍学并没有任何影响

时间:2018-01-16 10:00:55

标签: tensorflow keras

inp = Input([10], name='Input')
X = Dense(10, activation='relu', kernel_initializer='glorot_uniform')(inp)
X = Dropout(0.5, seed=0)(X)
X = Dense(1, activation='relu', kernel_initializer='glorot_uniform')(X)
X = Dropout(0.5, seed=0)(X)
m = Model(inputs=inp, outputs=X)
u = np.random.rand(1,10)

sess.run(tf.global_variables_initializer())
K.set_learning_phase(0)
print(sess.run(X, {inp: u}))
print(sess.run(X, {inp: u}))
K.set_learning_phase(1)
print(sess.run(X, {inp: u}))
print(sess.run(X, {inp: u}))
print(m.predict(u))

这是我的代码。 当我运行模型时,每次运行都得到相同的结果。但是,由于辍学层,运行模型时结果是否会略有变化?

1 个答案:

答案 0 :(得分:2)

所有的丢失层都是seeded,这将使模型始终丢弃相同的神经元。现在,您有一个固定的输入,每层的固定权重(不优化模型),总是相同的丢失,您将始终获得相同的输出。