返回介绍

Function 用法

发布于 2025-05-02 13:36:25 字数 3302 浏览 0 评论 0 收藏

作者: 灰猫 编辑: Morvan

theano 当中的 function 就和 python 中的 function 类似,不过因为要被用在多进程并行运算中,所以他的 function 有他自己的一套使用方式。

这是涉及的是 Theano 的 function 用法。在 theano 中由于涉及到 GPU 加速以及 CPU 的并行的运算,所以他的 function 会有不同。

这次介绍了 function 的三种用法,并且各举一个例子:

首先 , 导入所需要的 python 包:

import numpy as np
import theano.tensor as T
import theano

激励函数例子

使用 activation function(激励函数) 的例子。 activation function 的例子是使用 function 最简单的形式。 首先需要定义一个 tensor T :

x = T.dmatrix('x')

然后声明了概率计算方式,这里需要注意这里的计算方式要用到 Theano 里面的计算方式。而不能使用 numpy 包里面的 exp()

s = 1/(1+T.exp(-x)) # logistic or soft step 

最后。调用 theano 定义的计算函数 logistic

logistic = theano.function([x], s)
print(logistic([[0,1],[-2,-3]]))

"""
[[ 0.5         0.73105858]
 [ 0.26894142  0.11920292]]
"""

多输入/输出的 function

假定我们的 theano 函数中的输入值是两个,输出也是两个。 指定输入的值是矩阵 a , b

a,b = T.dmatrices('a','b')

计算输入 a,b 之间的差( diff ), 差的绝对值( abs_diff ),差的平方( diff_squared

diff=a-b
abs_diff=abs(diff)
diff_squared = diff**2

在这次使用 theano.function 的时候可以指定两个输,并且输出这两个数值的差( diff ),差的绝对值( abs_diff ), 差的平方( diff_squared )。当我们在调用这个函数的时候会将这三个结果作为输出值。

f = theano.function([a,b], [diff,abs_diff,diff_squared])

最后调用函数 f , 并且向函数传递初始化之后的参数。


x1,x2,x3= f(
    np.ones((2,2)), # a
    np.arange(4).reshape((2,2))  # b
)
print(x1, x2, x3)

"""
array([[ 1.,  0.],
       [-1., -2.]]),
array([[ 1.,  0.],
       [ 1.,  2.]]),
array([[ 1.,  0.],
       [ 1.,  4.]])   
"""

function 的名字

首先,我们可以使用 T.dscalars() 里面同时定义三个纯量的容器。 以及输出值 z

x,y,w = T.dscalars('x','y','w')
z = (x+y)*w

接下来应该是定义 theano 的函数了, 在定义函数的并且指定输入值的时候,我们期望能够有默认值, 于是我们使用 theano 的默认值书写方式来指定

# name for a function
f = theano.function([x,
                     theano.In(y, value=1),
                     theano.In(w,value=2)],
                    z)

print(f(23))    # 使用默认
print(f(23,1,4)) # 不使用默认
"""
48.0
100.0
"""

同时,我们还可以在定义默认值的时候,可以指定参数名字。 这样做的目的是防止我们定义的参数过于多的情况下,忘记函数的顺序。

f = theano.function([x,
                     theano.In(y, value=1),
                     theano.In(w,value=2,name='weights')],
                    z)
                    
print (f(23,1,weights=4)) ##调用方式

"""
100.0
"""

总结

这节中,我们介绍了 function 的三种方式: 首先,一个 theanod 的 function 的简单用法; 其次在使用 theano 的 function 中可以有多个 input 和 output; 最后是 theano 的 function 中可以有默认值并且可以给参数指定名称。

在 fucntion 的参数会在 CPU/GPU 中共享,下一期会提到 shared value 。敬请期待。

如果你觉得这篇文章或视频对你的学习很有帮助,请你也分享它,让它能再次帮助到更多的需要学习的人。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。