具有神经网络思维的Logistic回归

  • 数据集介绍
    • 数据拉平后
  • 模型搭建
  • 参数初始化
  • 前向传播
  • 反向传播
  • 梯度下降更新参数
  • 前向传播-预测predict
  • 建议
    • 其他
  • 结果
目标:搭建一个能够【识别猫】的简单的神经网络

参考自:【中文】【吴恩达课后编程作业】Course 1 - 神经网络和深度学习 - 第二周作业

数据集介绍

  • train_set_x_orig :保存的是训练集里面的图像数据(本训练集有209张64x64的图像)。
  • train_set_y_orig :保存的是训练集的图像对应的分类值(【0 | 1】,0表示不是猫,1表示是猫)。
  • test_set_x_orig:保存的是测试集里面的图像数据(本训练集有50张64x64的图像)。
  • test_set_y_orig :保存的是测试集的图像对应的分类值(【0 | 1】,0表示不是猫,1表示是猫)。
  • classes :保存的是以bytes类型保存的两个字符串数据,数据为:[b’non-cat’ b’cat’]。

图像是209张 大小为64*64的三通道图片,把图像【拉平】,【标准化】之后,即可用于训练

数据拉平后

训练集降维最后的维度: (12288, 209)
训练集_标签的维数 : (1, 209)
测试集降维之后的维度: (12288, 50)
测试集_标签的维数 : (1, 50)

模型搭建

这里搭建的是简单的Logistic回归,即只有1层的神经网络(输入层不算),且仅有一个结点

对于一张图片(一个样本的训练)

参数初始化

初始化www和bbb

  • w太大,会导致梯度消失;w随机数乘以0.001之后就正常了

为什么w可以设置为0矩阵?

  • 如果w = 0矩阵,同一层的多个神经元的计算结果相同,增加结点就没有意义了。但是在本例中,只有一个神经元,因而初始化为0与初始化随机数结论一样

前向传播

线性变换之后得到的值z:
www是形状为(12288,1)的矩阵
z(i)=wTx(i)+bz^{(i)} = w^Tx^{(i)} + b z(i)=wTx(i)+b
激活值:
y^(i)=a(i)=sigmoid(z(i))\hat y^{(i)} = a^{(i)} = sigmoid(z^{(i)}) y^​(i)=a(i)=sigmoid(z(i))
损失函数:
L(a(i),y(i))=−y(i)log⁡(a(i))−(1−y(i))log⁡(1−a(i))L(a^{(i)},y^{(i)}) = -y^{(i)}\log(a^{(i)}) - (1-y^{(i)})\log(1-a^{(i)}) L(a(i),y(i))=−y(i)log(a(i))−(1−y(i))log(1−a(i))
成本函数:
J=1m∑i=1nL(a(i),y(i))J = {1 \over m} \displaystyle\sum_{i=1}^n L(a^{(i)},y^{(i)}) J=m1​i=1∑n​L(a(i),y(i))

反向传播

d(cost)da=−ya+(1−y)(1−a){d(cost) \over da} = -{y\over a} + {(1-y) \over (1-a)} dad(cost)​=−ay​+(1−a)(1−y)​
dadz=a(1−a){da \over dz} = a(1-a) dzda​=a(1−a)
所以,
dz::=d(cost)dz=a−ydz ::={d(cost) \over dz} = a - y dz::=dzd(cost)​=a−y
dw::=d(cost)dw=x∗dzTdw ::={d(cost) \over dw} = x * dz^T dw::=dwd(cost)​=x∗dzT
db::=d(cost)db=dzdb ::= {d(cost) \over db} = dz db::=dbd(cost)​=dz

梯度下降更新参数

α\alphaα为学习率
w:=w−αdww := w - \alpha dw w:=w−αdw
b:=b−αdbb := b - \alpha db b:=b−αdb
前向传播,反向传播,迭代n次,记录每一步的【成本函数】cost

前向传播-预测predict

经过sigmoidsigmoidsigmoid函数之后,输出的概率在[0,1)之间。
将概率转换成【独热编码】one-hot encoding。
如果概率>0.5输出1,否则输出0

建议

在python中,将代码写在一个main函数下,然后在if __name__ == '__main__': 下调用,而不是直接写成【语句】的形式,如:

def main():pass
# 主函数入口
if __name__ == '__main__':main()

这样写的好处是,避免了python的变量作用域问题。 python变量没有类型,写得好难受

其他

  1. 函数返回值 可以用assert来检查返回值是否正常,返回一个元组 or 字典
    1.1 assert(如果为假,就报错)
  2. 可以用reshape提醒数组的维度
    2.1 reshape([])表示这是一个数
  3. squeeze可以压缩没有用到的维度,如
    3.1 [[1,4]] = > [1,4]
    3.2 [1] => 1
  4. plt.plot(二维数组,对应的标签),多次plt.plot()之后,用plt.show()显示

结果


【机器学习小记】【Logistic回归】deeplearning.ai course1 2nd week programming相关推荐

  1. 机器学习实战--Logistic回归与实例:从疝病症预测病马的死亡率

    声明 本文参考了<机器学习实战>书中代码,结合该书讲解,并加之自己的理解和阐述 机器学习实战系列博文 机器学习实战--k近邻算法改进约会网站的配对效果 机器学习实战--决策树的构建.画图与 ...

  2. 机器学习实战——Logistic回归

    书籍:<机器学习实战>中文版 IDE:PyCharm Edu 4.02 环境:Adaconda3  python3.6 关键词:sigmoid函数.批梯度上升法.随机梯度上升法 from ...

  3. 机器学习:Logistic回归处理用气象数据预测森林火灾的数据挖掘方法

    文章目录 线性模型与回归 最小二乘与参数求解 1.一维数据: 2.多维数据 最大似然估计 Logistic回归 基本介绍 基于Logistic回归和Sigmoid函数的分类 基于最优化方法的最佳回归系 ...

  4. 机器学习之Logistic回归(逻辑蒂斯回归)

    Logistic回归又称Logistic回归分析,主要在流行病学中应用较多,比较常用的情形是探索某疾病的危险因素,根据危险因素预测某疾病发生的概率,等等. 应用: 一.寻找危险因素,正如上面所说的寻找 ...

  5. 机器学习-监督学习-logistic回归,softMax回归

    本篇博文来总结一下回归模型里面两个非常重要的模型. logistic回归 softMAX回归 Logistic回归 logistics回归虽然有"回归"两字但是却是分类模型,并且是 ...

  6. python实现logistic_用Python实现机器学习算法—Logistic 回归算法

    在 Logistic 回归中,我们试图对给定输入特征的线性组合进行建模,来得到其二元变量的输出结果.例如,我们可以尝试使用竞选候选人花费的金钱和时间信息来预测选举的结果(胜或负).Logistic 回 ...

  7. 机器学习:Logistic回归介绍

    Logistic回归定义 简单来说, 逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性.比如某用户购买某商品的可能性, ...

  8. 机器学习实战 - Logistic回归

    假设我们有 一些数据点,我们用一条直线对其进行拟合,那么拟合的过程就称为回归. 实际上Logistic回归经常用于二类分类,也就是一般只用于只存在两种诸如"是"与"不是& ...

  9. 【机器学习】Logistic回归---学习笔记(重新整理)

    Logistic回归学习笔记 Logistic回归学习线路 预备知识:建议先去B站学习一下信息量,熵,BL散度,交叉熵的概念. Logistic回归的函数模型 损失函数.损失最小化架构 对数损失作为损 ...

最新文章

  1. 面对万亿级测序市场,纳米孔测序技术何去何从?
  2. C++语言学习思维导图
  3. 中小型互联网企业安全建设漫谈。
  4. Tomcat9 无法启动组件[Connector[AJP/1.3-8009]]
  5. 65.4. Other GUI - phpOraAdmin
  6. 【线上分享】海外超低延时链路设计的挑战与优化实践
  7. 不可思议!这篇全篇脏话的文章竟然发表了
  8. 一个XML Schema及XML文档(联系人)
  9. linux如何卸载内核模块_如何加载或卸载Linux内核模块
  10. Python3 离线安装第三方包
  11. 基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法
  12. 2010.11.13网规论文关注点
  13. 菜鸟网络后端java 一面总结
  14. php实现ts流切片,HLS-m3u8播放列表和ts切片(2)
  15. ajax创建未读消息列表,定时(隔一段时间)提交ajax更新未读消息
  16. 小白快速学习 Kotlin 语法基础
  17. Knowledge graph, Freebase, Wikidata三大知识图谱
  18. 逆袭-2014年中电投篮球赛札记_01【转】
  19. Python-----并发,并行,进程,多进程
  20. matlab 行 读取文件 跳过_MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)...

热门文章

  1. 教师继续教育 计算机知识,100道全国中小学教师继续教育网在线考试试题及答案...
  2. 计算机辅助工程具体应用,计算机辅助工程应用及展望.pdf
  3. 关于虚拟机黑屏的问题,解决了我长大三个月的烦恼
  4. 外观设计的基本功能与产品特点
  5. 初次联系导师短信模板_复试联系导师邮件怎么写?4个模板帮你解决!
  6. 数字化转型导师坚鹏:企业数字化营销能力提升
  7. Linux挂载磁盘,格式化,添加
  8. linux-windows双系统启动设置
  9. 思想决定行为,行为决定习惯,习惯决定性格,性格决定命运。
  10. html绘制电流曲线,circuitFX v1.60 AE脚本快速制作高科技电流电路板线路图形动画...