神经网络:了解theano图书馆

时间:2015-12-03 09:52:28

标签: python neural-network theano

任何人都可以解释下面python代码的输出:

from theano import tensor as T
from theano import function, shared

a, b = T.dmatrices('a', 'b')
diff = a - b
abs_diff = abs(diff)
diff_squared = diff ** 2

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

print f([[1, 1], [1, 1]], [[0, 1], [2, 3]])

测试功能

print f( [ [1,1],[1,1] ], 
         [ [0,1],[2,3] ])  

Output:  [ [[ 1.,  0.], [-1., -2.]], 
           [[ 1.,  0.], [ 1.,  2.]], 
           [[ 1.,  0.], [ 1.,  4.]]]

1 个答案:

答案 0 :(得分:5)

你实际上是在告诉Theano计算三个不同的函数,其中每个后续函数都取决于先前执行函数的输出。

在您的示例中,您使用两个输入参数:矩阵A和矩阵B.

A = [[ 1, 1 ],
     [ 1, 1 ]]

B = [[ 0, 1 ],
     [ 2, 3 ]] 

第一个输出行:[[ 1., 0.], [-1., -2.]]是通过减去A和B矩阵来计算的:

[[1, 1],   -   [[0, 1],    = [[ 1, 0 ],
 [1, 1]]        [2, 3]]       [-1, -2]

第二个输出行[[ 1., 0.], [ 1., x2.]]仅仅是我们刚刚计算的差值的绝对值:

abs [[ 1, 0 ],   =   [[ 1, 0],
     [-1, -2]]        [ 1, 2]]

第三行和最后一行按元素计算平方值。

Theano magic

Theano实际上解释了您的Python代码,并推断出给定变量所依赖的变量(或数学运算)。因此,如果您只对diff_squared输出感兴趣,则无需包括对diffabs_diff的调用。

f = function([a, b], [diff_squared])