一日精通tensorflow(三)

在线性模型中输出等于输入的加权和。

当输出为所有输入的加权和,则这时候的模型是线性的

线性模型-全连接神经网络

在线性可分问题中,线性模型能够很好的解决

现实中绝大多数问题不能通过线性分割

激活函数去实现非线性化

如果每个神经元的输出通过一个非线性函数,整个神经网络就是非线性的,这个非线性函数就是激活函数




加入偏置项,并进行非线性变换。

这里是加上偏置项和ReLU函数

tensorflow提供了其中非线性激活函数,用代码实现激活函数的前行传播算法

a=tf.nn.relu(tf.matmul(x,x1)+biases1)

y=tf.nn.relu(tf.matmul(a,x2)+biases2)

多层网络解决异或运算

解决多层变换,感知机模型(图4.5),并不能解决异或问题

加入隐藏层就能解决异或问题,神经网路实际上有组合特征提取的功能,对图像识别和语音识别由很大的帮助


损失函数的定义

神经网络的模型的效果和优化的目标是通过损失函数定义的

分类问题:将不同的样本分到事先定义好的类别中。

通过神经网络模型 解决多分类问题最常用的方法是设置n个输出节点,n为类别的个数。

神经网络可以得到一个n维的数组,数组中每一个维度对应一个类别,在理想情况下,以识别数字1为例,输出结果越接近【0,1,0,0,0,0,0,0,0,0,0】越好!


交叉熵(cross_entropy)用来衡量输出向量与期望向量之间的差距。交叉熵刻画了两个概率分布之间的距离,是比较常用的损失函数


交叉熵是两个概率分布之间的距离,但是神经网络的输出不一定是一个概率分布,通过加入softmax回归层将神经网络向前传播的结果变成概率分布



交叉熵的函数是不对称的,交叉熵刻画了两个概率分布的距离,交叉熵越小,两个概率越接近

p代表正确答案,q代表预测值


使用tensorflow实现交叉熵

cross_entropy=-tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0)))

y_真实值,y预测结果,tf.clip_by_value()将张量的log进行限制,不会出现不符合公式的计算结果,y的概率大于1的被换成了1,概率小于1e-10的被换成了1e-10

注意两个矩阵直接通过“*”不是矩阵相乘 tf.matmul 而是直接的元素相乘

实现softmax回归之后的交叉熵损失函数

cross_entropy=tf.nn.softmax_cross_entropy_with_logits(y,y_)

y代表输出结果,y_代表标准答案


回归问题解决的是具体数值的预测,房价的预测,销售的预测,这些问题的预测都是具体的实数

解决回归问题的输出一般只有一个节点,这个节点就是预测值

回归问题常用的损失函数  均方误差(MSE)


mse=tf..reduce_mean(tf.square(y_-y))

自定义损失函数

对于不同情况的损失函数不同

定义损失函数tf.select()实现选择操作,tf.greater()实现比较


注意tf.select 变成了tf.where


神经网络算法的优化:

梯度下降算法:优化单个参数的取值

反向传播算法:在所有参数上使用梯度下降算法

梯度下降算法会迭代式更新参数


其实就是每次对参数求梯度,并定义学习率来定义更新参数的幅度

但是梯度下降法也具有缺陷,参数的初始值会很大程度上影响到最后的结果

为了解决梯度下降法运算时间长,且出现局部最优的问题

每次计算一小部分训练数据的损失函数,一小部分(batch),

神经网络的大致一下过程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值