Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 如何规范不同激活函数的训练数据?_Machine Learning_Neural Network_Mnist - Fatal编程技术网

Machine learning 如何规范不同激活函数的训练数据?

Machine learning 如何规范不同激活函数的训练数据?,machine-learning,neural-network,mnist,Machine Learning,Neural Network,Mnist,我正在训练完全连接的神经网络来对MNIST数据集进行分类。输入数据是正方形黑白图像,像素值在[0255]中 我已经读到,要使用sigmoid()activator,需要将输入标准化为[0,1](sigmoid的范围) 如何规范化tanh()activator的输入数据?我是否需要将其重新缩放为[-1,1](tanh范围)或它仍然可以在[0,1]中 哪种方法更好?为什么?一般指南是什么?对于不同的激活功能,不必使用不同的规范化。事实上,对于sigmoid,您不必将输入标准化为[0,1]。sigmo

我正在训练完全连接的神经网络来对MNIST数据集进行分类。输入数据是正方形黑白图像,像素值在
[0255]

我已经读到,要使用
sigmoid()
activator,需要将输入标准化为
[0,1]
(sigmoid的范围)

如何规范化
tanh()
activator的输入数据?我是否需要将其重新缩放为
[-1,1]
(tanh范围)或它仍然可以在
[0,1]


哪种方法更好?为什么?一般指南是什么?

对于不同的激活功能,不必使用不同的规范化。事实上,对于sigmoid,您不必将输入标准化为
[0,1]
。sigmoid
[0,1]
的范围是其输出的范围。它的输入范围(域)实际上是从负无穷大到正无穷大

更重要的是,您的输入不会直接进入sigmoid函数,因此图像输入的范围与sigmoid将获得的输入范围不同。将有一些线性层在其中更改数据范围


一般指导是将您的输入标准化为
[-1,1]
。这与激活函数无关,而是反向传播的一般有效措施。请参阅。

标准化会导致神经网络的正确行为,因为它简化了网络权重调整,因此您可以选择标准化或标准化

标准化=(x-平均值(x))/std(x)

归一化=(x-x_最小值)/(x_最大值-x_最小值)

此外,Hampel等人对tanh估计进行了一项很好的研究,这项研究似乎对异常值具有鲁棒性。 他们考虑了以下x_标准=(1/2)*(tanh(0.01*((x-平均值(x))/std(x))+1)


Tanh估计标准化参考可在以下网址找到:

感谢您的解释。我对
[0,1]
规范化的逻辑是,下一层作为输入输出从上一个sigmoid层获取。即网络中除第一层外的每一层的输入都在激活功能的输出范围内。这意味着你应该对第一层做同样的操作。@Ribtoks输入数据范围内的方差应该由线性运算符处理。每个层是否接收相同范围的输入并不重要。另一个建议是:试试看。训练MNIST分类器相当快。