「学习内容总结自吴恩达深度学习课程第一课第二周关于 Python/numpy 的内容」
1. 什么是rank 1 array
当创建神经网络的输入时,有时会使用下面的代码来创建行向量或者列向量,但其实这样创建的既不是行向量也不是列向量,它的形状为(n,),这样一个畸形的数组称之为rank 1 array(秩为1的数组)。
2. 产生rank 1 array的情况
情况一:
有时候在创建输入时不小心打错代码,也会创建出这样形状畸形的数组,所以创建数组的时候要注意检查“[ ]”符号的数量,如果只为一对的话,那就不小心创建了rank 1 array。
情况二:
还有的时候,要导入大量的数据进行训练迭代,可能为了便于迭代会使用Python中的函数压缩数据。在做udacity深度学习第一个项目的时候就会遇到这样的情况:
这里是把features和targets通过函数压缩在一张表里,这样可以同时将X,y进行迭代。但这时就会不可避免的产生秩为1的数组。
函数压缩数据的示例如下:
情况三:
下面这些切取数组的做法也会产生rank 1 array:
3. 产生rank 1 array后的解决方法
方法一:使用或来改变形状
使用是把列的数量增加一维,则是把行的数量增加一维。
方法二:使用reshape方法改变形状
Python中的是个十分好用的方法,在不确定数据形状的情况下,reshape一下是个很有必要的操作。Andrew Ng的建议是不要羞于使用,这能帮助我们避免产生bug。
4. 避免出现rank 1 array 的做法
不要用这种写法
使用上面的方法修改形状,不要羞于使用
必要的时候使用来确定形状是否与想要的结果一致
领取专属 10元无门槛券
私享最新 技术干货