吴恩达深度学习笔记

Posted 好奇小圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吴恩达深度学习笔记相关的知识,希望对你有一定的参考价值。

监督学习简介


文章目录


前言

学习的第一天


一、监督学习常见应用

输入输出应用类别
房子特色房价房地产Stand NN
广告广告点击网络广告Stand NN
图像目标(1,……,n)图像目标CNN
音频转文字文字识别RNN
英语中文机器翻译RNNs
图像、雷达信息汽车位置自动驾驶hybrid neural network

二、基础知识

1.数据类型

结构化数据非结构化数据
表格式的数据如图像、文本、声音

2.学习次序

weekcontent
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

总结

我会继续努力的

以上是关于吴恩达深度学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)

吴恩达深度学习课程笔记

吴恩达深度学习课程笔记

吴恩达 深度学习笔记+作业

吴恩达深度学习笔记

吴恩达深度学习笔记