Theano:获取矩阵维度和矩阵值(SharedVariable)
我想知道怎么从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