python - 训练修改后的全连接神经网络
问题描述
以一个简单的 3 层 MLP 神经网络为例。每个隐藏层都实现y=xw+b
了y
形状层的输出激活矩阵,形状[batch_size, output_size]
的x
输入激活矩阵,形状[batch_size, input_size]
的w
可训练权重矩阵和形状[input_size, output_size]
的b
可训练偏差向量[output_size]
。
现在修改层定义,以便每个层实现y = x(w mod m) + b
wherem
是一个可训练矩阵,其形状与 相似w
且相同w
。由于 tensorflow 为反向传播实现了模函数的梯度,因此由于添加的模而传播梯度应该不是问题。在网络中进行这种相当微不足道的修改会破坏 MLP,并且网络完全停止学习。换句话说,MNIST(10 位分类)的准确率下降到约 10%,相当于随机猜测。
有人会猜测为什么网络无法与添加的mod
运营商一起学习吗?我能够实现y=xw + (b mod m)
哪个工作得很好。该问题似乎仅在mod
与该xw
术语一起使用时出现。
解决方案
推荐阅读
- scala - 在 REPL 中将代码扩展为原始 AST Scala 3
- reactjs - 获取 TypeError:theme.spacing 不是 material-ui 中的函数
- python - 试图让我的代码协调用户输入的大小写
- python - Python反卷积给出了意想不到的结果
- c - 将 const Void 转换为字符串错误
- reactjs - React :总是考虑之前的状态 id,即使使用 prevState 和 useEffect
- javascript - 我尝试但未能在 fo 循环中打印出圆圈的 ID
- mongodb - 将几个 mongodb 与 monstache 一起使用
- android - 如何调用“await()”函数?(未解决的参考错误)
- php - MYSQL 只限制左表的结果,但显示右表的所有结果