作业与测验
最简单的神经网络-Relu
逻辑回归-二元分类算法
损失函数
梯度下降
单一样本的梯度下降
m个样本的梯度下降(求w
向量化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import numpy as np
a = np.array([1,2,3,4])
print(a)
print(a.shape)

# 计算运行时长

import time
a = np.random.rand(1000000)
b = np.random.rand(1000000)
print(a.shape)
# 当前时间
tic = time.time()
# 创建线性回归函数C=aᵀb
c = np.dot(a,b)
# 当前时间
toc = time.time()
# 计算运行时间:ms
print("运行时间:" + str(1000*(toc-tic)) + "ms")


dw=np.zeros((5,1))
print(dw)
向量化例子
python中的广播
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as np

A = np.array([[56.0,0.0,4.4,68.0],
[1.2,104.0,52.0,8.0],
[1.8,135.0,99.0,0.9]
])
print(A)

# 按列求和
cal = A.sum(axis=0)
print("按列求和")
print(cal)
print(cal.shape)

#改变成一行四列
cal = cal.reshape(1,4)
print(cal)
print(cal.shape)

# 矩阵每列都除不同的数算出百分比
percentage = 100*A/cal
print(percentage)
numpy向量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import numpy as np

# 不建议的
# 产生五个随机数
print("********不建议(5,)*******")
a = np.random.rand(5)
print(a)
# (5,)代表这是数组,不是向量,秩为1
print(a.shape)
# 转置后没变
print(a.T)
# 内积 因为是数组所以结果不是矩阵
print(np.dot(a.T,a))


# 建议 不要使用(N,)类型使用(N,M)
print("********不建议(5,1)*******")
a = np.random.rand(5,1)
print(a)
# 转置
print(a.T)
# 内积
print("内积:")
print(np.dot(a,a.T))

# 如果出现(5,)类型用reshape
# 解决办法 reshape
print("解决办法 reshape")
a = np.random.rand(5)
a = a.reshape((5,1))
print(a)

作业1用神经网络思想实现逻辑回归
神经网络的表现形式
计算神经网络的输出
多样本向量化
向量化实现的解释
激活函数
为什么使用非线性激活函数
神经网络的梯度下降
作业2 一层隐藏层的神经网络
深层神经网络
深层网络的正向传播
正确的矩阵维数
为深层神经神经网络构建模块
参数和超参数
作业3 神经网络和深度学习
训练 开发 测试集
偏差和方差
机器学习的基本配方
正则化方法一
为什么正则化可以减少过拟合
正则化方法二(抛弃--dropout) 随机失活
理解dropout
正则化方法三(数据扩增) --防止过拟合
归一化输入(加速训练过程)
梯度消失和爆炸
深层网络权值初始化
梯度的数值近似
梯度检验
梯度检查注意事项
作业4 深度神经网络的初始化、正则化、梯度校验
小批量梯度下降
理解小批量梯度下降
指数加权平均(构建优化算法)
理解指数加权平均
动量梯度下降
RMSPROP(均方根传递)
Adam优化算法(梯度算法优化)
学习速率衰减(刚开始训练步长大一些,之后步长小一些)
作业5 梯度下降的优化
参数调整过程
用适当的标准选择超参数
batch normalization 批量归一化
将batch norm 添加到神经网络
为什么Batch Norm有效
测试时的Batch Norm
Softmax回归 (作为激活函数使用)
训练一个softmax分类器
深度学习框架
深度学习框架--TensorFlow
作业6 TensorFlow入门
正交化
单一的量化评估指标
满足和优化指标
设置训练、开发、测试集
开发集和训练集的大小和指标
深度学习与人类指标
可避免的偏差
理解人类水平表现
超越人类水平表现
提高模型性能
进行误差分析
训练集和测试集的不同分布
不匹配数据分布的偏差和方差
解决数据不匹配问题
迁移学习
多任务学习
什么是端到端深度学习
边缘检测(CNN)
填充(padding)
卷积步长-stride
三维卷积
卷积网络的一层
深度卷积神经网络(多层)
池化层
CNN示例
为什么用卷积
作业7 搭建卷积神经网络模型以及应用
经典网络模型
残差网络
为什么使用残差网络
1*1卷积(Network in Network)
inception模型
inception network
Mobile Net (深度可分离卷积)
Mobile Net架构(改进)
高效网络(Efficient Net)
使用开源代码
迁移学习(对已经训练好的网络迁移)
数据增强(扩充自己的数据)
作业8 Keras入门与残差网络的搭建
目标定位
地标检测--Landmark detection(特征点检测)
目标检测
在卷积网络上实现滑动窗口
边界框预测(YOLO)
交并比(IOU)评价目标检测算法
非极大值抑制
锚框(anchor box) 一个网格单元检测多个对象
YOLO算法
u-net进行语义分割
转置卷积
u-net结构
单样本学习
孪生神经网络(Siamese network)
三元组损失(triplet loss)
人脸验证和二进制分类
卷积在一维和三维的推广
作业9 迁移学习-神经风格迁移
为什么用序列模型
序列模型会用到的符号
循环神经网络模型(RNN)
RNN的反向传播
不同类型的RNN(Tx不等于Ty)
RNN构建语言模型
对新序列的采样
RNN的梯度消失
GRU单元(门控循环单元)使RNN更擅长长距离连接
LSTM(长短期记忆)解决长期记忆和短期记忆
双向RNN
深度RNN
作业10 手把手实现RNN,字符级语言模型
词表示(word representation)
使用词嵌入
词嵌入的性能
矩阵嵌入(Embedding matrix)
Negative sampling(负采样)
情感分类(sentiment classification)
词嵌入消除偏见(种族、性别)
作业11 词向量运算
选择最有可能的句子
注意力模型引入
注意力模型(Attention model)
Transformer 引言
自注意力机制(self-Attention)
多头注意力机制
Transformer
作业12 机器翻译--使用注意力机制
库/类 函数 作用 输入 输出
numpy shape 查看数组形状 A.shape (209, 64, 64, 3) 209个三维数组
numpy reshape 改变数组形状 A.reshape(A.shape[0],-1) 把A转换成形状为shape[0]行的矩阵,列自动计算 本例为(209,12288)每一行yi代表一个图片共209张
numpy .T 矩阵转置 A.T 每一行变成每一列,因为深度学习常用列向量代表每张图片或单个样本,本列为(12288,209)每一列代表一个图片共209张
numpy .dot 矩阵乘法 np.dot(w.T,X) + b 计算WᵀX+b
isinstance 判断变量类型 isinstance(b, float) 判断b是否是float类型,是则返回true
append 向列表末尾添加元素 name_list.append(‘zhaoliu’) [‘zhangsan’, ‘lisi’, ‘wangwu’, ‘zhaoliu’]
公式 latex
$sigmoid(x) = \frac{1}{1+e^{-x}}$ sigmoid(x) = \frac{1}{1+e^{-x}
$z^{(i)} = w^T x^{(i)} + b \tag{1}$ z^{(i)} = w^T x^{(i)} + b \tag{1}
$\hat{y}^{(i)} = a^{(i)} = sigmoid(z^{(i)})$ \hat{y}^{(i)} = a^{(i)} = sigmoid(z^{(i)})
$\mathcal{L}(a^{(i)}, y^{(i)}) = - y^{(i)} \log(a^{(i)}) - (1-y^{(i)} ) \log(1-a^{(i)})$ \mathcal{L}(a^{(i)}, y^{(i)}) = - y^{(i)} \log(a^{(i)}) - (1-y^{(i)} ) \log(1-a^{(i)})
$J = \frac{1}{m} \sum_{i=1}^m \mathcal{L}(a^{(i)}, y^{(i)})$ J = \frac{1}{m} \sum_{i=1}^m \mathcal{L}(a^{(i)}, y^{(i)})
$sigmoid( w^T x + b) = \frac{1}{1 + e^{-(w^T x + b)}}$ sigmoid( w^T x + b) = \frac{1}{1 + e^{-(w^T x + b)}}
$\frac{\partial J}{\partial w} = \frac{1}{m}X(A-Y)^T$ \frac{\partial J}{\partial w} = \frac{1}{m}X(A-Y)^T
$\frac{\partial J}{\partial b} = \frac{1}{m} \sum_{i=1}^m (a^{(i)}-y^{(i)})$ \frac{\partial J}{\partial b} = \frac{1}{m} \sum_{i=1}^m (a^{(i)}-y^{(i)})
$\theta = \theta - \alpha \text{ } d\theta$ \theta = \theta - \alpha \text{ } d\theta
$\hat{Y} = A = \sigma(w^T X + b)$ \hat{Y} = A = \sigma(w^T X + b)