theano程序(一)

下面内容是此文章的练习,加了一些注释和个人理解,不当之处请赐教:



#导入头文件
import numpy as np
import matplotlib.pyplot as plt
import theano

import theano.tensor as T
from theano import pp



#symbolic variables 符号变量   编写theano代码更像写数学公式

foo = T.scalar('foo')  #定义一个标量
bar = foo**2     #另一个变量
bar2 = foo**3
print type(bar)   #class 'theano.tensor.var.TensorVariable'

print bar.type   #TensorType(float64, scalar)

print pp(bar)  # pretty print funtion  ,bar的内容: (foo ** TensorConstant{3})

#为了进行计算,需要定义符号函数
#funtion函数的第一个参数表示输入,输入部分必须用中括号[ ]括起,如果输入参数为空,则用[]表示
#第2个参数为函数表达式,如果有多个表达式则也必须用中括号[ ]括起,若只有一个则可括可不括
#这里定义了两个函数
f1 = theano.function([foo],[bar])  
f2 = theano.function([foo],bar2)
print f1(3)

#替代函数的另一个方式:用符号变量的eval方法
#eval的参数是字典形式,用“键-值对”表示
print bar.eval({foo:3})

#python定义的函数也可以给theano的变量赋值
def square(x):
    return x**2
bar = square(foo)
print 'hi:'
print bar.eval({foo:3})
print square(2)


#theano中有向量、矩阵等类型,在这些类型上可能施加各种操作

A = T.matrix('A')
x = T.vector('x')
b = T.vector('b')
y = T.dot(A,x) + b  #与其他矩阵语言不同,NumPy中的乘法运算符*按元素逐个计算,矩阵乘法可以使用dot函数
z = T.sum(A**2)    #这里先求A各元素平方,然后各列相加。
# theano.function函数可以同时做多个计算任务,如下所示同时计算y和z两个表示式。下面第3个参数b设置了默认值
linear_mix = theano.function([A,x,theano.Param(b,default=np.array([0,0]))],[y,z])
#下面的参数分别对应A,x,b
print linear_mix(np.array([[1,2,3],[4,5,6]]),np.array([1,2,3]),np.array([4,5])) 

#下面只有两个实参:A和x. 则第3个形参b使用默认的值 

print linear_mix(np.array([[1,2,3],[4,5,6]]),np.array([1,2,3]))


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值