TensorFlow 神经网络中的权重约束

时间:2020-12-29 01:39:34

标签: python tensorflow keras

我正在使用 TensorFlow/Keras 训练神经网络进行分类,我希望输出层中的权重具有以下属性:

假设权重或核矩阵为3 by 4 matrix W,其元素为W_ij

我希望对于每一列 j,只有一个 nonzero W_ijW_ij = 1

实现此要求的好方法是什么?

我能想到的一种可能的解决方案是设置以下约束:

W_1j + W_2j + W_3j = 1 for all j = 1,2,3,4

W_ij * (1-W_ij) = 0, for all i, j

如何实现这些约束?或者有没有更好的方法来设置这个要求?

1 个答案:

答案 0 :(得分:0)

你确定要控制体重???如果您尝试对权重实施这种类型的约束,则您的神经网络可能永远不会学到任何东西。

在我看来,您只想要输出中的 softmax 层。

softmax 完全符合您的要求。假设您正在对猫、狗、鸟进行分类。如果在输出中使用 softmax,您将始终得到一个张量,其中只有一个元素为 1(最有可能的类) 例子

[1,0,0] #cat
[0,1,0] #dog
[0,0,1] # bird
相关问题