吴恩达深度学习笔记
Posted 好奇小圈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吴恩达深度学习笔记相关的知识,希望对你有一定的参考价值。
监督学习简介
文章目录
前言
学习的第一天
一、监督学习常见应用
输入 | 输出 | 应用 | 类别 |
---|---|---|---|
房子特色 | 房价 | 房地产 | Stand NN |
广告 | 广告点击 | 网络广告 | Stand NN |
图像 | 目标(1,……,n) | 图像目标 | CNN |
音频 | 转文字 | 文字识别 | RNN |
英语 | 中文 | 机器翻译 | RNNs |
图像、雷达信息 | 汽车位置 | 自动驾驶 | hybrid neural network |
二、基础知识
1.数据类型
结构化数据 | 非结构化数据 |
---|---|
表格式的数据 | 如图像、文本、声音 |
2.学习次序
week | content |
---|---|
1 | 介绍 |
2 | 神经网络程序基础 |
3 | 单隐层神经网络 |
4 | 多层神经网络 |
3.常用符号
功能 | 矩阵大小 |
---|---|
训练集输入 | X.shape=(n,m) |
训练集标签 | Y.shape=(1,m ) |
训练集 | (x1,y1),……(xm,ym) |
矩阵维数 | R |
训练集 | M_train |
测试集 | M_test |
第i个集合 | xi或yi…… |
4.二分分类(logistics)
借用sigmoid函数:
第一种表示(本课程使用):
第二种表示:
损失函数
(越小越好)
非凸:
本文使用:
成本函数
5.梯度下降法
从某一点开始,从最陡峭的那个坡往下走。(dw于程序中表示导数名)
6.导数和流程图(略)
7.logistics中的梯度下降
先算出dL/da,然后算出da/dz=a(1-a),从而得到dL/dz
再由dz/dw得到dL/dw
7.向量化的必要性
import numpy as np
import time
a=np.random.rand(1000000)#生成随机数
b=np.random.rand(1000000)
tic=time.time()#计时
c=np.dot(a,b)#点乘
toc=time.time()
print("array time is:"+str(1000*(toc-tic))+"ms")#输出+类似js的字符串合并+强制类型转换
c=0
tic=time.time()#计时
for i in range(1000000):#循环
c+=a[i]*b[i]
toc=time.time()
print("loop time is:"+str(1000*(toc-tic))+"ms")
array time is:2.9914379119873047ms
loop time is:365.05675315856934ms
相量比循环快了一百二十多倍(其实我在用MATLAB时就知道了),再用MATLAB试一试
a=rand(1,1000000);
b=rand(1,1000000);
tic
c=a.*b;
toc*1000
tic
for i=1:1000000
c(i)=a(i)*b(i);
end
toc*1000
ans = 8.179100000000000 ans = 23.912500000000001 可见用数组,python快于MATLAB,而用循环,MATLAB明显快于python
8.向量化的logistics
python和MATLAB都有“广播”功能,也就是当数组和实数相加时,会自动将实数扩展为数组。
python:
import numpy as np
#已知训练集x(n*m),标签Y(m*1),以及初始的w(1*n),b(1*1),训练次数N,学习率a
for i in range(N):
z=np.dot(w.T,x)+b
A=1/(1+np.exp(-z))
dz=A-Y
dw=1/m*x*dz.T
db=1/m*np.sum(dz)
w:=w-a*dw
b:=b-a*db
MATLAB:
%已知训练集x(n*m),标签Y(m*1),以及初始的w(1*n),b(1*1),训练次数n,学习率a
for i=1:N
z=w*x+b;
A=1./(1+exp(-z));
dz=A-Y;
dw=1/m*x*dz';
db=1/m*sum(dz);
w=w-a*dw';
b=b-a*db;
end
总结
我会继续努力的
以上是关于吴恩达深度学习笔记的主要内容,如果未能解决你的问题,请参考以下文章