深度学习入门之numpy PIL笔记等

深度学习入门之numpy笔记

(1) np.dot
1.如果处理的是一维数组,则得到的是两数组的內积(顺便去补一下数学知识)
在这里插入图片描述
在这里插入图片描述
2.如果是二维数组(矩阵)之间的运算,则得到的是矩阵积(mastrix product)
在这里插入图片描述
(2) 矩阵的* 理解
在Python中,矩阵间的*(乘号乘法)相当于MATLAB中的.*点乘,会带来broadcast。见下例子`import numpy as np

a=np.random.rand(3,3)
b=np.random.rand(3,1)
e=np.random.rand(45,90)
c=a*b
d=print(c.shape)
print(a)
print(b)
print©`

c输出如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190723164953165.png)
可见C的shape是3*4,矩阵b发生了broadcast。

(3)np.multiply
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190917200728141.png)

(4)np.dot 和np.matmul 的	区别
其实两者都是矩阵乘法,具体差别如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190922150809606.png)

近来在看吴恩达深度学习作业的时候,看到这么一行代码,发现网上说的清楚的文章比较少,特此记录。

X.reshape(X.shape[0], -1).T
1
X.reshape(X.shape[0], -1).T可以将一个维度为(a,b,c,d)的矩阵转换为一个维度为(b∗c∗d, a)的矩阵。
例子1:
>>> X.shape
(209, 64, 64, 3)
1
2
我们假设x的shape是(209, 64, 64, 3)的。

>>> X.shape[0]
209
1
2
然后,我们说shape[0]就是第一个列的行数,也就是209。

>>> X.reshape(X.shape[0], -1)
(209, 64*64*3)
1
2
通过reshape重新建立维度,第一个维度就是X.shape[0],这就是正常的reshape操作;第二个维度是-1,我们知道X的shape属性是多少,是(209, 64, 64, 3),但是想让X变成209行,列数不知道是多少,所以也就是209 * 64 * 64 * 3 / 209,也就是64 * 64 * 3。

>>> X.reshape(X.shape[0], -1).T
(64*64*3, 209)
1
2
所以A trick when you want to flatten a matrix X of shape (a,b,c,d) to a matrix X_flatten of shape (b ∗∗ c ∗∗ d, a) is to use:

X.reshape(X.shape[0], -1).T
--------------------- 
总结一下,参数-1就是不知道行数或者列数多少的情况下使用的参数,所以先确定除了参数-1之外的其他参数,然后通过(总参数的计算) / (确定除了参数-1之外的其他参数) = 该位置应该是多少的参数。

有关X.reshape 的理解转载自TeFuirnever ,来源CSDN 原文链接如下

原文:https://blog.csdn.net/TeFuirnever/article/details/88919206 


在我们用自己训练的网络来识别读片时,需要将我们自己的读片读入并化为和我们的网络相应的输入格式,以往采用如下方法进行图片的读取,改变大小:
fname = "images/" + my_image
image = np.array(ndimage.imread(fname, flatten=False))
my_image = scipy.misc.imresize(image, size=(num_px,num_px)).reshape((num_px*num_px*3,1))
但我自己在pycharm中安装了scipy后发现IMread和imresize并不能用,哪怕是按照网上的教程安装了PIL(安装PIL也是个坑,现在没有PIL了,安装时要安装pillow和Pillow=PIL),后来在谋篇博客中发现好像是scipy升级后移除了这两个函数,也不知道是不是。
经探索,我采用以下方法:
infile='cat_in_iran.jpg'
im = Image.open(infile)
my_img=im.resize((64,64),Image.ANTIALIAS)
img=np.asarray(my_img).reshape(64*64*3,1)
先打开照片,把照片改大小,然后转化为矩阵

关于list matrix array的问题
我们一般在Python中直接a=[]定义的对象并不是矩阵,而是一个list,定义矩阵和数组则需要用np.matrix或np.array来定义
list的加法是两个list首尾相接,而矩阵的加法是每个元素对应相加,则矩阵加法必须维度相同,list加法则不必

np.linalg.norm 对矩阵求范数
范数其实就是一个向量大小的一个度量,可以理解为模长。
个人理解梯度检验中的两个范数相除可以理解为两个向量合成的第三向量的长度,再归一化的大小,可初略理解为两个向量的距离。范数的计算公式如下

![在这里插入图片描述](https://img-blog.csdnimg.cn/201908011337238.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjg4NTAy,size_16,color_FFFFFF,t_70)
如何返回一个张量在某个维度的最大值及其参数
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190909145721170.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNjg4NTAy,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190909145734910.png)

、np.;linalg.norm求的是范数,一般求两个向量之间的差距就是求向量之间的距离 即每个元素相减再平方求和后再开方。默认参数既是求二范数?

、TensorFlow中给模型喂数据的方法和得到某一层的激活值的方法如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190915210608665.png)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值