我有一个神经网络,在最后一层有10个输出神经元,使用softmax激活。我也知道根据输入值,输出层的某些神经元应该有0值。所以我有一个由10个神经元组成的特殊输入层,每个神经元都是0或1。在
如果3号输入神经元也是0,那么有没有可能强迫3号输出神经元的值为0?在
action_input = Input(shape=(10,), name='action_input')
...
x = Dense(10, kernel_initializer = RandomNormal(),bias_initializer = RandomNormal() )(x)
x = Activation('softmax')(x)
我知道有一种方法,通过这种方法,我可以屏蔽出神经网络之外的输出层的结果,并对所有非零相关的输出进行整形(以使总和为1)。但我想在网络中解决这个问题,并在网络培训中使用它。我要用自定义图层吗?在
您可以使用
Lambda
层和K.switch
检查输入中的零值,并在输出中屏蔽它们:但是,正如您所看到的,输出的总和不再是一。如果希望总和为1,可以重新缩放值:
^{pr2}$最后我想出了一个代码:
相关问题 更多 >
编程相关推荐