zoukankan      html  css  js  c++  java
  • Theano基础

    Theano基础

    theano与numpy中都有broadcasting:numpy中是动态的,而theano需要在这之前就知道是哪维需要被广播(broadcast)。针对不同类型的数据给出如下的一张表,基本类型包括scalar、vector、row、col、matrix、tensor3、tensor4

    x = scalar('myvar',dtype='int32') 
    x = iscalar('myvar') 
    x = TensorType(dtype = 'int32', broadcastable=())('myvar') 

    有整形int对应的8、16、32、64位分别为b、w、i、l;float类型对应的32、64位为f、d;complex类型对应的64、128位为c、z。

    theano.tensor.scalar(name=None,dtype=config.floatX) 
    theano.tensor.vector(name=None,dtype=config.floatX) 
    theano.tensor.row(name=None, dtype=config.floatX) 
    theano.tensor.col(name=None,dtype=config.floatX) 
    theano.tensor.matrix(name=None,dtype=config.floatX) 
    theano.tensor.tensor3(name=None,dtype=config.floatX) #3D张量 
    theano.tensot.tensor4(name=None,dtype=config.floatX) #4D张量 
    #!/usr/bin/env python2
    # -*- coding: utf-8 -*-
    """
    theano基础
    """
    
    import numpy as np
    import theano.tensor as T
    from theano import function
    
    #定义X和Y两个常量 (scalar),把结构建立好之后,把结构放在function,在把数据放在function。
    # 建立 x 的容器
    x = T.dscalar('x')
    # 建立 y 的容器
    y = T.dscalar('y') 
    #  建立方程
    z = x + y
    
    # 使用 function 定义 theano 的方程
    # 将输入值 x, y 放在 [] 里,  输出值 z 放在后面
    f = function([x, y], z)
    
    # 将确切的 x, y 值放入方程中
    print(f(2, 3))
    
    # output: 5.0

    在theano 中 的 pp (pretty-print) 能够打印出原始方程:

    #!/usr/bin/env python2
    # -*- coding: utf-8 -*-
    """
    theano基础
    """
    
    import numpy as np
    import theano.tensor as T
    from theano import function
    
    #theano 中 的 pp (pretty-print) 能够打印出原始方程:
    from theano import pp
    print(pp(z))
    # output:(x + y)

     定义矩阵,以及利用矩阵做相关运算:

    #!/usr/bin/env python2
    # -*- coding: utf-8 -*-
    """
    theano基础
    """
    
    import numpy as np
    import theano.tensor as T
    from theano import function
    
    #定义矩阵,以及利用矩阵做相关运算:
    # 矩阵 x 的容器
    x = T.dmatrix('x')
    # 矩阵 y 的容器
    y = T.dmatrix('y')
    # 定义矩阵加法
    z = x + y
    # 定义方程
    f = function([x, y], z)
    print(f(
            np.arange(12).reshape(3,4),#x为3行4列的矩阵
            10 * np.ones((3, 4)) #y也为3行4列,且数值全为10
            ))
    
    """
    output:
    [[ 10.  11.  12.  13.]
     [ 14.  15.  16.  17.]
     [ 18.  19.  20.  21.]]
    """
  • 相关阅读:
    C#计算代码的执行耗时
    c#值类型和引用类型
    C#类、接口、虚方法和抽象方法
    15,了解如何在闭包里使用外围作用域中的变量
    函数闭包,golbal,nonlocal
    init())函数和main()函数
    函数的命名空间
    函数的默认参数是可变不可变引起的奇怪返回值
    遍历目录
    super顺序
  • 原文地址:https://www.cnblogs.com/xmeo/p/7231585.html
Copyright © 2011-2022 走看看