假设我有一个大小为(1152,10)的矩阵w,如下所示:

>>> w.get_value(True)
array([[-0.03824838, -0.02033614,  0.040734  , ...,  0.01585871,
         0.04165901,  0.01058411],
       [-0.00626427,  0.00891617,  0.01286055, ...,  0.00184506,
        -0.01282589, -0.00209718],
       [ 0.00457122, -0.01036582,  0.02780926, ...,  0.01269533,
        -0.00953711, -0.00271188],
       ...,
       [ 0.00592541, -0.00267455,  0.02258315, ..., -0.00788802,
         0.02260087, -0.01107418],
       [-0.02363299,  0.02963436,  0.02735142, ..., -0.01933786,
        -0.03731941,  0.02085613],
       [-0.0079082 ,  0.01099584,  0.01910999, ...,  0.00122137,
        -0.006866  , -0.01500945]])


我有一个输入size(1152,1)像这样:

>> input.get_value(True)
array([ 0.,  0.,  0., ...,  0.,  0.,  0.])


现在,我想像这样计算它们的点乘:

>> result = theano.tensor.dot(image, w)


它给了我:

>>> result
dot.0
>>> type(result)
<class 'theano.tensor.var.TensorVariable'>
>>> type(image)
<class 'theano.tensor.sharedvar.TensorSharedVariable'>
>>> type(classifier.W)
<class 'theano.tensor.sharedvar.TensorSharedVariable'>


theano.tensor.dot是否返回符号表达式而不是值?

最佳答案

一言以蔽之:是的。

要查看操作结果,请使用result.eval()

最小的工作示例:

import numpy as np
import theano
from theano import tensor as T
w_values = np.random.randn(1152, 10).astype(theano.config.floatX)
input_values = np.random.randn(1152, 1).astype(theano.config.floatX)
w = theano.shared(w_values, 'w')
input = theano.shared(input_values, 'input')
result = T.dot(input.T, w)
print(result.eval())

10-07 23:17