python - 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
如何实现这些约束?或者有没有更好的方法来设置这个要求?
解决方案
你确定要控制体重???如果您尝试对权重实施这种类型的约束,您的神经网络可能永远不会学到任何东西。
在我看来,您只需要输出中的 softmax 层。
softmax 将完全符合您的要求。假设您正在对猫、狗、鸟进行分类。如果您在输出中使用 softmax,您将始终得到一个张量,其中只有一个元素为 1(最可能的类)示例
[1,0,0] #cat
[0,1,0] #dog
[0,0,1] # bird
推荐阅读
- r - 根据列的值重复data.table中的行
- wxpython - 如何使用 Inno_setup 添加我的可执行文件的自动更新
- linux - 将 GUNZIP 连接到 GREP
- android - 如何将图像从 Webview 下载到自定义/私有文件夹而不是 Android 中的下载文件夹
- python - 由于属性错误,无法为 RCNN 训练数据集?
- aspnetboilerplate - 是否可以使用 Asp.net Boilerplate 为应用服务方法制定命名策略
- gnu - configure.ac 文件中的 AC_SEARCH_LIBS 宏有问题
- laravel - Maatwebsite CSV 导出中的 Laravel-Excel UTF8 问题
- apache - Mojolicious url_for 操作在 web 服务中不安全
- c# - C# 不能使 `notnull` 类型可以为空