当前位置:   article > 正文

全连接神经网络中relu和softmax两个激活函数以及损失函数的小理解_activation='softmax'和'relu

activation='softmax'和'relu

全连接神经网络中relu和softmax两个激活函数以及损失函数的小理解

机器学习课上通过keras构造了一个全连接的神经网络

这次实验用的是keras官方下载的数据集,目的是把给出的数据分为十类,每个数据是一个二维数组,标签是一个0-10的数字。
下面是构建的神经网络

model = keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape=[28, 28]))
model.add(keras.layers.Dense(300, activation = 'relu'))
model.add(keras.layers.Dense(100, activation = 'relu'))
model.add(keras.layers.Dense(10,activation = 'softmax'))
  • 1
  • 2
  • 3
  • 4
  • 5

其中用到的relu激活函数对传入的每一个值大于零则返回本身,小于零则返回零,相当于y = max(0, x)。激活函数softmax输出值是在0-1之间且合为1的十个数,相当于一个概率分布,分别对应十个输出神经元。
定义损失函数与调整函数的参数

model.compile(loss = 'sparse_categorical_crossentropy',
             optimizer = 'adam',metrics = ['accuracy'])
  • 1
  • 2

由于数据集给出的每个标签都是0-9的单个数字,所以定义损失函数用loss = 'sparse_categorical_crossentropy’将单个数字转化为独热编码形式,以便于与神经网络输出的十个值作对比,判断对错。当标签本来就是一个向量损失函数就用loss = ‘categorical_crossentropy’
最开始optimizer = ‘sgd’,但训练出来的准确率只有9%,后改为optimizer = ‘adam’,效果达到90%。因为sgd适合于比较平稳的的数据,其实也可以先把数据归一化再用sgd。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/75158
推荐阅读
相关标签
  

闽ICP备14008679号