【Deep learning AI】Python Basics with Numpy 作业笔记

常用的numpy方法请详见:https://blog.csdn.net/flyDeDog/article/details/63255431?locationNum=9&fps=1


#创建一个向量

x = np.array([1, 2, 3])


#sigmoid 函数的实现


sigmoid = 1/(1+np.exp(-x))

np.exp(-x)是对输入向量 element-wise的方法


#sigmoid的导数

ds = s(1-s)


#当我们输入一个大型矩阵时,我们需要将这个矩阵unroll成一个超长的向量,这样可以避免出现各种BUG

x.shape是np.array的一个属性。为一个记录了行*列*深度的列表 

x.reshape()方法可以改变矩阵的维度,例如将输入的图片 (length,height,depth=3) 转换成(length*height*depth=3,1)的向量。


x = x.reshape((x.shape[0]*x.shape[1]*x.shape[2],1))


#对输入数据进行归一化

输入的矩阵为(行向量作为样品):x=[[0 3 4],[3 5 6]]  


利用 x_norm = np.linalg.norm(x, axis = 1, keepdims = True)

可得  x_norm = [5,5*根5]


将x=x/x_norm 即可归一化, x_norm是2*1的矩阵,x是2*3的矩阵。python中的广播则会将x_norm中的各行对应处理x中的各个行。



#建立一个softmax函数


x --一个n*m矩阵

1.利用np.exp()将x指数化

x = np.exp(x)

2.计算每一行的和

x_sum = np.sum(x,axis =1 ,keepdim =True)

3.利用广播求出softmax函数

softmax = x/x_sum


将三维矩阵想象成一个立方体

b.sum(axis=0) 就是将所有的行叠加,仿佛一个立方体的上表面不断往下叠加。

b.sum(axis=1) 将所有的列叠加,一个立方体的左表面不断往右叠加。

b.sum(axis =2 ) 将所有的深度进行叠加,一个立方体的前表面不断往后叠加。


#L1 loss函数


yhat表示预测值的行向量

y表示实际的标签行向量

sum求和的时候可以利用矩阵乘法np.dot()与累加np.sum()

loss = float(np.sum(abs(y-yhat),axis = 0,keepdims = True))#利用求和将y-yhat行向量进行行叠加成一个数,记得绝对值
loss = np.dot(abs(y-yhat),np.ones(y.shape[0]).T)#利用矩阵乘法1*n * n*1 求和

#L2 loss函数



loss = np.dot((y - yhat),(y - yhat).T) #直接利用矩阵乘法即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值