擅长:python、mysql、java
<p>您可以使用<code>Lambda</code>层和<code>K.switch</code>检查输入中的零值,并在输出中屏蔽它们:</p>
<pre><code>from keras import backend as K
inp = Input((5,))
soft_out = Dense(5, activation='softmax')(inp)
out = Lambda(lambda x: K.switch(x[0], x[1], K.zeros_like(x[1])))([inp, soft_out])
model = Model(inp, out)
model.predict(np.array([[0, 3, 0, 2, 0]]))
# array([[0., 0.35963967, 0., 0.47805876, 0.]], dtype=float32)
</code></pre>
<p>但是,正如您所看到的,输出的总和不再是一。如果希望总和为1,可以重新缩放值:</p>
^{pr2}$