训练修改后的全连接神经网络

时间:2019-10-08 15:06:02

标签: python tensorflow neural-network

采用简单的3层MLP神经网络,例如this。每个隐藏层都实现y=xw+b,其中y是形状[batch_size, output_size]的层的输出激活矩阵,x是形状[batch_size, input_size]的输入激活矩阵,{ {1}}是形状为w的可训练权重矩阵,[input_size, output_size]是形状为b的可训练偏差矢量。

现在修改层定义,以便每个层实现[output_size],其中y = x(w mod m) + b是类似于m且形状与w相同的可训练矩阵。由于tensorflow为反向传播实现了模函数的梯度,因此由于增加了模数而引起的梯度传播应该不是问题。在网络中进行这种相当琐碎的修改会破坏MLP,并且网络将完全停止学习。换句话说,对于MNIST(10位数字分类),准确度下降到〜10%,相当于随机猜测。

对于网络为何无法通过添加的w运算符进行学习,会有人有任何猜测吗?我能够实现mod,但效果很好。仅当将y=xw + (b mod m)mod一起使用时,问题才出现。

0 个答案:

没有答案