Theano:获取矩阵维度和矩阵值(SharedVariable)

6 投票
1 回答
6729 浏览
提问于 2025-04-17 23:25

我想知道怎么从theano中获取一个共享变量的维度。

比如说,这个方法就不管用:

from theano import *
from numpy import *

import numpy as np

w = shared( np.asarray(zeros((1000,1000)), np.float32) )

print np.asarray(w).shape
print np.asmatrix(w).shape

而且只返回了

()
(1, 1)

我还想知道怎么打印或者获取一个矩阵或向量的值……

1 个回答

14

你可以这样获取一个共享变量的值:

w.get_value()

然后这样就可以用了:

w.get_value().shape

不过这样会复制共享变量的内容。如果你想去掉这个复制,可以使用借用参数,像这样:

w.get_value(borrow=True).shape

但是如果共享变量在GPU上,这样做还是会把数据从GPU复制到CPU。为了避免这种情况:

w.get_value(borrow=True, return_internal_type=True).shape

其实有个更简单的方法,就是编译一个Theano函数来返回形状:

w.shape.eval()

w.shape 返回一个符号变量。使用 .eval() 可以编译一个Theano函数并返回形状的值。

如果你想了解更多关于Theano如何处理内存的信息,可以查看这个网页: http://www.deeplearning.net/software/theano/tutorial/aliasing.html

撰写回答