首页 > 解决方案 > TensorFlow 神经网络中的权重约束

问题描述

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

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

我想对于每一列 j,只有一个nonzero W_ij,和W_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

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

标签: pythontensorflowkeras

解决方案


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

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

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

[1,0,0] #cat
[0,1,0] #dog
[0,0,1] # bird

推荐阅读