• 只有thenao.shared()类型才有get_value()成员函数(返回numpy.ndarray)?

0. 图结构

Theano编程的核心是用符号占位把数学关系表示出来。

import theano.tensor as T
x = T.dmatrix('x')
y = x*2.>>> y.owner.op.name
'Elemwise{mul,no_inplace}'
>>> y.owner.inputs
[x, DimShuffle{x,x}.0]# 返回 list
>>> y.owner.inputs[0]
x
>>> y.owner.inputs[1]
DimShuffle{x,x}.0

编译Theano其实是编译了一张图。

a = T.vector('a')   # declare symbolic variable
b = a + a**10       # build symbolic expression
f = theano.function([a], b)# compile function
print(f([0, 1, 2]))

图结构中在编译之前要求参与运算的数据结构都需声明各个维度是否可broadcastable。numpy使用的是运行时的shape信息(不需声明,自动broadcast?)。

1. 惯常处理

x = T.matrix('x')  # the data is presented as rasterized images
y = T.ivector('y') # the labels are presented as 1D vector of [int] labels# reshape matrix of rasterized images of shape
# (batch_size, 28*28) to a 4D tensor, 使其与LeNetConvPoolLayer相兼容
layer0_input = x.reshape((batch_size, 1, 28, 28))>>> x.reshape((500, 3, 28, 28))
TensorType(float64, 4D)
>>> x.type
TensorType(float64, matrix)
>>> layer0_input.type
TensorType(float64, (False, True, False, False))# 布尔值表示是否可被broadcast
>>> x.reshape((500, 3, 28, 28)).type
TensorType(float64, 4D)
>>> T.dtensor4().type
TensorType(float64, 4D)         

2. theano.shared 向 numpy.ndarray 的转换

# train_set_x: theano.shared()类型
train_set_x.get_value(borrow=True)# 返回的正是ndarray类型,borrow=True表示返回的是“引用”
train_set_x.get_value(borrow=True).shape[0]

3. built-in data types

查阅theano完备的文档,我们知:

theano所内置的数据类型主要位于theano.tensor子模块下,

import theano.tensor as T
  • b开头,表示byte类型(bscalar, bvector, bmatrix, brow, bcol, btensor3,btensor4)
  • w开头,表示16-bit integers(wchar)(wscalar, wvector, wmatrix, wrow, wcol, wtensor3, wtensor4)
  • i开头,表示32-bit integers(int)(iscalar, ivector, imatrix, irow, icol, itensor3, itensor4)
  • l开头,表示64-bit integers(long)(lscalar, lvector, lmatrix, lrow, lcol, ltensor3, ltensor4)
  • f开头,表示float类型(fscalar, fvector, fmatrix, fcol, frow, ftensor3, ftensor4)
  • d开头,表示double类型(dscalar, dvector, dmatrix, dcol, drow, dtensor3, dtensor4)
  • c开头,表示complex类型(cscalar, cvector, cmatrix, ccol, crow, ctensor3, ctensor4)

这里的tensor3/4类型也不神秘,

  • scalar:0-dim ndarray
  • vector:1-dim ndarray
  • matrix:2-dim ndarray
  • tensor3:3-dim ndarray
  • tensor4:4-dim ndarray

注意以上这些类型的类型都是theano.tensor.var.TensorVariable

>>> x = T.iscalar('x')
>>> type(x)
theano.tensor.var.TensorVariable
>>> x.type
TensorType(int32, scalar)

我们继续考察tensor

>>> x = T.dmatrix()
>>> x.type>>> x = T.matrix()
>>> x.type

在设计经典的卷积神经网络(CNN)时,在输入层和第一个隐层之间需要加一个卷积的动作,对应的api是theano.tensor.signal.conv.conv2d,其主要接受两个符号型输入symbolic inputs

  • 一个4d的tensor对应于mini_batch的输入图像

    1. mini_batch_size
    2. # of feature input maps
    3. image height
    4. image width
  • 一个4d的tensor对应于权值矩阵WW<script type="math/tex" id="MathJax-Element-2">W</script>

    1. # of feature output maps(也即 # of filters)
    2. # of feature input maps
    3. filter height
    4. filter width
rng = np.random.RandomState(23455)
input = T.dtensor4('input')
w_shp = (2, 3, 9, 9)# 3 means: rgb, 图像的三种颜色分量
w_bound = np.sqrt(np.prod(w_shp[1:]))
W = theano.shared(np.asarray(rng.uniform(low=-1./w_bound, high=1./w_bound, size=w_shp), dtype=input.dtype), name='W')
conv_out = conv.conv2d(input, W)

theano学习——内置数据类型相关推荐

  1. python3字典升序排序_python3从零学习-4.2、内置数据类型

    内置标准类型: * Boolean(布尔) * Number(数字) * String(字符串) * List(列表) * Tuple(元组) * Sets(集合) * Dictionary(字典) ...

  2. python类型-Python基本内置数据类型有哪些?

    玩蛇网Python学习平台在这里会和大家讲下Python初学者,最常用到的Python基本内置数据类型有哪些. 在Python程序中,每个数据都是对像,每个对像都有自己的一个类型.不同类型有不同的操作 ...

  3. orm设置bool型 python_python基础教程之基本内置数据类型介绍

    Python基本内置数据类型有哪些 一些基本数据类型,比如:整型(数字).字符串.元组.列表.字典和布尔类型. 随着学习进度的加深,大家还会接触到更多更有趣的数据类型,python初学者入门时先了解这 ...

  4. Python数据结构与算法(1.2)——Python基础之变量与内置数据类型

    Python数据结构与算法(1.2)--Python基础之变量与内置数据类型 0. 学习目标 1. Python 程序的运行 1.1 Python 交互式解释器 1.2 Python 程序脚本 2. ...

  5. python数据类型与数据结构--内置数据类型

    学习目标:将python所涉及的数据类型.数据结构弄清楚 python作为面向对象编程语言.那么代表数据的对象都有哪些呢? 在这里我把他们分为内置数据类型,文件数据类型,第三方常用数据结构和自定义的数 ...

  6. Java内置数据类型

    内置数据类型 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. byte: byte 数据类型是8位.有符号的,以二进制补码表示的整数: 最小值是 ...

  7. Hive的内置数据类型

    Hive的内置数据类型可以分为两大类:(1).基础数据类型:(2).复杂数据类型.其中,基础数据类型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBL ...

  8. 1.1内置数据类型概述

    1.为什么使用内置数据类型? 2.Python核心数据类型 3.数据类型的不可变与可变特性 4.序列与散列的概念: 5.数据类型的检查方法 6.寻求帮助 1.为什么使用内置数据类型? 1 -(1)内置 ...

  9. 数据结构(Python版):Python内置数据类型

    1. Python内置数据类型 python内置数据类型中的列表list和字典dict,可作为Python语言中实现各种常用数据结构的基石,后续各种数据结构均基于他们实现.两种数据类型的常见(操作)方 ...

最新文章

  1. linux畸形文件夹,Linux下简单的缓冲区溢出
  2. hashCode() 和equals() 区别和作用
  3. 21张GIF动图让你秒懂数学原理
  4. Linux进程全解8——exec 族函数
  5. java修改ldap用户密码_LDAP 用户更改自己的密码
  6. boost 单io_serverce 异步多线程资源保护代码
  7. springcloud服务熔断和服务降级的自我理解
  8. comment on 视图_oracle 使用comment语句添加表注释
  9. .net Core使用RabbitMQ
  10. 面试:谈谈你对jQuery的理解
  11. 怎样以最快的速度导入mysql
  12. CentOS mysql常用命令
  13. c语言简单教师管理系统,C语言教师管理系统代码
  14. Android 9.0系统源码_包管理机制(二)PackageInstaller安装APK
  15. 机械臂技术参数的意义
  16. 前端获取计算机设备信息,前端获取设备/APP信息
  17. Python 获取当前时间 年-月-日-时-分-秒
  18. 新闻推荐--从DKN出发
  19. 文件管理系统软件---爱米云网盘
  20. nginx找不到静态(css,js,html)文件404报错,root的解析

热门文章

  1. cad完全卸载教程_AutoCAD 2019 如何卸载,彻底卸载CAD教程
  2. spring的部分注释
  3. delphi 子接口是否实现父接口_您可以从子类接口的接口调用父接口的默认方法吗?...
  4. cuda支持 java_cuda运行时错误(48):没有内核映像可用于在设备上执行
  5. java linux命令远程执行_java执行远程服务器上的shell命令
  6. 海思3159A运行yolov3(三)——darknet2caffe
  7. Qt总结之七:QPaintEvent绘制雷达图(二)
  8. OpenCV3.4.3+Qt5.9.4(QtCreator)开发环境搭建
  9. 尺度不变特征变换(SIFT算法)Matlab程序代码测试例子的说明(Lowe的代码)
  10. Tensorflow训练和预测中的BN层的坑(转载)