深度学习算法实践2---线性代数和Numpy的使用

41 篇文章 8 订阅
27 篇文章 1 订阅

在下载了Theano源码之后,我们同时以开发模式安装了Theano。下面我们来尝试使用Numpy和Theano作一些简单的线性代数运算,熟悉一下这两库的基本使用方法,为下面的神经网络算法学习打好基础。

# 测试开发环境是否正确,定义二维数组及常数与数组相乘
import numpy
from theano import *
import theano.tensor as T

mtx = numpy.asarray([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
scale = 2.0
newMtx = scale * mtx

print("二维数组乘以常数: %f, %f" % (newMtx[0, 0], newMtx[2, 0]))
在引入了我们所需要的类之后,我们首先声明了一个矩阵,这里是一个3*2的二维数组mtx,接着我们将一个常数乘以矩阵mtx,得到新的矩阵newMtx,最后我们打印出第一行第一列和第三行第一列的值。

从上面这个简单的例子,我们可以看到,Theano和Numpy的使用还是非常简单的。

下面来看两个矩阵的加法。其实从本质上来说,向量是一维数组,矩阵在是二维数组,张量是三维数组,而我们所熟悉的常数,即标量,实际上是零维数组。所以在讨论矩阵加法之前,我们先来看两个数的加法操作,然后将其推广到矩阵乘法。

# 两个数的加法
import numpy
import theano.tensor as T
from theano import function

x = T.dscalar("x")
y = T.dscalar("y")
z = x + y
addition = function([x, y], z)

x = 100
y = 200;
print("加法结果:%d" % addition(x, y))
在上面代码中首先定义两个标量x和y,然后定义z为x与y之和,接着定义函数addition,功能是求两个标量之和。在完成上述定义之后,我们为标量x和y赋值,调用定义好的加法函数,打印出运算结果。

如果我们要做两个矩阵的加法,只需对上面的代码进行简单的修改即可,代码如下所示:

# 两个矩阵的加法
import numpy
import theano.tensor as T
from theano import function

x = T.dmatrix("x")
y = T.dmatrix("y")
z = x + y
addition = function([x, y], z)

x = [[1.0, 2.0], [3.0, 4.0]]
y = [[10.0, 20.0], [30.0, 40.0]]
print(addition(x, y))
打印结果如下所示:

[[ 11.  22.]
 [ 33.  44.]]
从上面的代码可以看出,在Theano和Numpy下,线性代数的相关操作还是非常简单的。

作为参考,下面列出了我们经常使用的类型:

byte: bscalar, bvector, bmatrix, brow, bcol, btensor3, btensor4
16-bit integers: wscalar, wvector, wmatrix, wrow, wcol, wtensor3, wtensor4
32-bit integers: iscalar, ivector, imatrix, irow, icol, itensor3, itensor4
64-bit integers: lscalar, lvector, lmatrix, lrow, lcol, ltensor3, ltensor4
float: fscalar, fvector, fmatrix, frow, fcol, ftensor3, ftensor4
double: dscalar, dvector, dmatrix, drow, dcol, dtensor3, dtensor4
complex: cscalar, cvector, cmatrix, crow, ccol, ctensor3, ctensor4






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值