1 Theano介绍和安装
1.1 什么是Theano
Theano是一个较为老牌和稳定的机器学习python库之一。Theano基于Python擅长处理多维数组(紧密集成了Numpy),属于比较底层的框架,theano起初也是为了深度学习中大规模人工神经网络算法的运算所设计,我们可利用符号化式语言定义想要的结果,接着theano会对我们的程序进行编译,使其高效运行于GPU或CPU
1.2 Theano的特点
从Theano官方文档上摘抄来的对Theano的特征介绍:
- tight integration with Numpy (紧密集成Numpy) —— 在Theano编译函数中使用numpy.ndarray
- transparent use of a GPU (GPU的透明使用) —— 使得其对浮点数的运输非常高速
- efficient symbolic differentiation (高效的符号分解) —— 也是Theano的发明初衷之一,可帮我们推导我们所定义的一个或多个输入的函数
- speed and stability optimizations (快速且稳定的优化) —— 在函数表达式 log(1+x) 中即使 x <script type="math/tex" id="MathJax-Element-2">x</script>非常小,也可以给出精确的答案
- dynamic C code generation (动态生成C代码) —— 使得表达式求值(evaluate expression)更加快速
- extensive unit-testing and self-verification (大量的单元测试及自我验证) —— 可检测及诊断许多类型的错误
1.3 安装
系统ubuntu14.04
# 1. 先使用apt-get update命令进行更新,避免安装Python库时出现问题
$ sudo apt-get update
# 2. 接着安装在安装theano前需安装的Python库
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-dev python-pip python-nose python-tk g++ libopenblas-dev git
# 3. 接着第三步便是使用pip命令安装theano
$ sudo pip install theano
2 简单应用
2.1 张量
2.1.1 什么是张量
Tensor(张量)是什么,刚开始看的时候被绕的迷迷糊糊的头都晕了,最后发现其实就是多维数组起了个高大上的名字,让人看起来很牛逼,张量向量啥的比一维数组二维数组听起来高端多了。
通俗的讲:
scalar(标量) 0维数组
vector (向量) 1维数组
row (行向量) 2维数组,但是行数保证是1
col (列向量) 2维数组,但是列数保证是1
matrix (矩阵) 2维数组
tensor3 (三维矩阵) 3维数组
tensor4 (四位矩阵) 4维数组
2.1.2 怎么定义张量
后续所有的示例都需要按照如下代码引入包
import theano
import theano.tensor as T
from theano.tensor import *
from theano import shared
import numpy as np
Theano提供了一列预先定义好的张量类型可供使用者很方便地创造张量变量,所有的张量构造函数都接收一个 可选 的输入参数name。如以下便构造了三个以myvar为名字的 0维整型标量(scalar)变量
x = T.scalar('myvar', dtype='int32')
x = iscalar(