【吴恩达】【deplearning.ai】【编程作业笔记一】【python Basics with Numpy】

这是这门课程主要用到的numpy函数,即使你以前学过python也建议你能看看。这都在python 3下的jupyter notebook上运行的,如果你在python 2下运行,可能在后续内容得到与教程不一致的结果。我编写的目的是为了督促自己的学习,而且对于一些函数我是能多详细就多详细说明。

1  用numpy建立基础函数

1.1  sigmoid function,np.exp()

在使用numpy库中这些函数之前,我建议你熟悉一下关于python中广播的概念。这对于我们的学习帮助很大。

在课程中,我们知道sigmoid函数表达式为:sigmoid(x) =  。

首先,让我们用一个简单的exp()来理解广播:

接下来,让我们再用exp()来构造我们的sigmoid()函数:

 

1.2  Sigmoid gradient

正如视频课程中所看到的的,sigmoid函数梯度为

???????_??????????(?)=s(?)=s(?)(1s(?))

下面我们来实现这个梯度函数:

 

1.3  Reshaping arrays

这节我们学习np.reshape():

函数原型:np.reshape(a, newshape, order = ‘C’)

参数: 【a】要重新整型的数组

【newshape】是将a组成什么维度的数组,比如当值为(2,1)就是将a重组成2行1列的数组

【order】暂时不用考虑,在本课程中,通常用不到

      例子:

我们也许会注意到np.reshape(a,(2,-1)),这表明我只想将a重组成2行,列数不想知道(计算机会自行算出列数)的数组。

 

1.4  Normalizing rows

现在让我们来看看numpy库中的linalg.norm()函数:

函数原型:x_norm = np.linalg.norm(x,ord = None, axis = None,keepdims = False)

参数:【x】表示要求范数的矩阵或向量

                      【ord】表示范数的类型,如下表所示:

                       向量的范数:           

                          矩阵的范数:

                                    ord =1: 列和的最大值

                                    ord =2: |λ-|=0,求特征值,然后求最大特征值的算数平方根

                                    ord =∞: 行和的最大值

          【axis】axis = 1:表示按行向量处理,求多个行向量的范数

                        axis = 0:表示按列向量处理,求多个列向量的范数

                        axis = None:表示矩阵范数

         【keepding】是否保持矩阵的二维特性

例子:

 

1.5  Broadcasting and the softmax function

从视频教程中可知softmax(x) =

           下面我们来实现这个函数:

 

2  Vectorization

在深度学习中,由于经常需要处理大量的数据,所以向量化的运算是十分必要的,

下面我们来比较一下使用向量化和使用for函数的效率:

‘’

由以上程序可发现,使用向量化的操作的确可以大幅度提高计算效率,并且句式清晰明了

 

2.1  Implement the L1 and L2 loss functions

损失用于评估模型的性能。您的损失越大,您的预测(?)与真实值(?)的差异就越大。

在深度学习中,您使用Gradient Descent等优化算法来训练您的模型并最大限度地降低成本。

(1)首先,让我们实现L1损失的numpy矢量化版本。

         您可能会发现函数abs(x)(x的绝对值)很有用。

         本节中L1 损失函数定义为:

                               = -   |

         接来下让我们来实现L1损失函数:

          (2)现在,让我们实现L2丢失的numpy向量化版本。

                    有几种实现L2丢失的方法,但你可能会发现函数np.dot()很有用。

                     本节中L2 损失函数定义为:

                               = -    

                   接来下让我们来实现L2损失函数:

3  squezze函数的理解

从数组的形状中删除单维度,如下列代码所示:

import numpy as np

x = np.array([[[0], [1], [2]]])
print(x)
"""
x=

[[[0]
  [1]
  [2]]]
"""
print(x.shape)  # (1, 3, 1)

x1 = np.squeeze(x)  


print(x1)  # [0 1 2] #此时只剩下维度为3的条目
print(x1.shape)  # (3,)

再如:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值