吴恩达《深度学习》L1W2作业1
本文是跟着参考资料的博主梳理一遍,化为内功!
我使用的编译环境是天池的notebook。
1 使用numpy构建基本函数
1.1 sigmoid function 和np.exp()
-
什么是sigmoid函数?
也称为逻辑函数,它是一种非线性函数,可以用来解决二分类问题。
它的优点是函数处处可导;函数范围在[0,1]之间(可以用来压缩数据)。
-
用math.exp()实现sigmoid函数:
import math
def basic_sigmoid(x):
s=1/(1+math.exp(-x))
return s
basic_sigmoid(3)
输出结果为:
但是在深度学习中主要使用的是矩阵和向量,如果用math的话会报错,比如:
x = [1, 2, 3]
basic_sigmoid(x)
- 所以用numpy更为合适,例如输入x行向量,求:
import numpy as np
x=np.array([1,2,3])
print(np.exp(x))# result is (exp(1), exp(2), exp(3))
- 如果x是向量,则s=x+3或s=1/x之类的Python运算将输出与x维度大小相同的向量s:
import numpy as np
x=np.array([1,2,3])
print(x+3)
- 用numpy实现sigmoid函数,其中x可能是是实数,向量或者矩阵:
import numpy as np
def sigmoid(x):
s=1/(1+np.exp(-x))
return s
x=np.array([1,2,3])
sigmoid(x)
1.2 sigmoid gradient
- 需要计算梯度来使用反向传播优化损失函数,创建函数sigmoid_grad()计算sigmoid函数相对于其输入x的梯度。 公式为:
- 一般分为两步编写此代码:
- 1 将s设为x的sigmoid
- 2 计算
import numpy as np
def sigmoid(x):
s=1/(1+np.exp(-x))
return s
def sigmoid_derivative(x):
s=sigmoid(x)
ds=s*(1-s)
return ds
x=np.