吴恩达深度学习 —— 2.16 关于python/numpy向量的说明

python numpy程序语言提供了很高的灵活性,但同时也会产生一些问题。

例如在python中创建代码a=np.random.randn(5),这段代码生成5个随机高斯变量,存储在数组a中。这个数组的形状是(5,)结构,这是所谓的python秩为1的数组,它既不是行向量也不是列向量。

这种结构的转置和其本身是一样的,将这个结构的本身和其转置相乘得到的是一个数,而不是一个矩阵。当你编写神经网络的时候,不要用这种数据结构,这种数据结构形状是(5,)或者(n,),其中秩为1的数组。

可以将上述数据结构转换为矩阵,例如将初始化代码a=np.random.randn(5)改写为a=np.random.randn(5,1),这样可以将a变成一个 5 ∗ 1 5*1 51的列向量,之前a和a的转置看起来是一样的,但在新的代码中,a的转置使得a从一个列向量变为一个行向量。

代码a=np.random.randn(5)创建了一个秩为1的数组,该数据结构的a.shape为(5,)。

在进行编程练习时或者实现神经网络的逻辑回归时,不用这些秩为1的数组。相反,每次创建数组时,把它定义成列向量,或者定义为一个行向量,代码表示为a=np.random.randn(5,1)或者为a=np.random.randn(1,5)

在编程中不知道一个向量具体的维度是多少时,可以用声明assert()来确保这是一个向量,例如assert(a.shape==(5,1)),这是一个行向量。这些assert()执行起来很快,它们也可以看成是代码的文档。

如果由于某些原因得到一个秩为1的数组,可以使用reshape将秩为1的数组转换成一个矩阵,变成一个行向量或者列向量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值