zoukankan      html  css  js  c++  java
  • Theano入门笔记2:scan函数等

    1.Theano中的scan函数

    目前先弱弱的认为:相当于symbolic的for循环吧,或者说计算图上的for循环,也可以用来替代repeat-until。

    与scan相比,scan_checkpoint减少了内存的使用,只保存最后一步的计算结果。

    2.Theano中的shared变量

    Variable with Storage that is shared between functions that it appears in.多个函数之间共享存储空间的变量--Theano的共享变量。

    Shared variables是可以加快计算速度的全局变量(http://blog.csdn.net/yjiejie7758/article/details/51898686)

    shared variable是一种符号变量(symbolic variable),但是这个symbolic variable又拥有自己的值。

    shared可以存储在显存中,因为这个特性,我们才会有“把神经网络参数放到shared中”的这种做法。
    shared指向显存中的一块区域,这块区域在运算中是共享的,所以常常在运算中用来存储权值参数

    定义shared variables: a=theano.shared(2,'a'), a是符号变量,初值为2,只能调用,但不能直接访问。

    之所以称之为shared variable,是因为在不同函数中赋值都是一样的

     3.Theano中的dimshuffle函数

    引自:http://www.cnblogs.com/wacc/p/5342479.html

    theano中的dimshuffle函数用于对张量的维度进行操作,可以增加维度,也可以交换维度,删除维度。
    注意的是只有shared才能调用dimshuffle()
    'x'表示增加一维,从0d scalar到1d vector
    (0, 1)表示一个与原先相同的2D向量
    (1, 0)表示将2D向量的两维交换
    (‘x’, 0) 表示将一个1d vector变为一个1xN矩阵
    (0, ‘x’)将一个1d vector变为一个Nx1矩阵
    (2, 0, 1) -> AxBxC to CxAxB (2表示第三维也就是C,0表示第一维A,1表示第二维B)
    (0, ‘x’, 1) -> AxB to Ax1xB 表示A,B顺序不变在中间增加一维
    (1, ‘x’, 0) -> AxB to Bx1xA 同理自己理解一下
    (1,) -> 删除维度0,(1xA to A)

  • 相关阅读:
    ZK节点介绍和基本操作
    zooker集群容器搭建
    Redisson 整合Spring测试分布式锁
    Redis主从哨兵容器配置
    Redis分布式锁
    Redis调用Lua脚本并测试
    基于Docker的Mysql 主从架构搭建
    容器安装及使用基础
    ConcurrentHashMap源码解读
    原码反码补码
  • 原文地址:https://www.cnblogs.com/shuzirank/p/6735102.html
Copyright © 2011-2022 走看看