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

全连接神经网络中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'))

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

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

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值