gpt4 book ai didi

python-2.7 - 访问 Theano 共享变量的数据

转载 作者:行者123 更新时间:2023-11-30 08:31:08 25 4
gpt4 key购买 nike

我已成功将 MNIST 数据集加载到 Theano 共享变量中,如下所示

# Read MNIST dataset from gzipped file as binary
f = gzip.open('mnist.pkl.gz', 'rb')
# Store dataset into variable
train_set = cPickle.load(f)
# Close zipped file
f.close()
# Store data in Theano shared variable
train_set_x = theano.shared(numpy.asarray(train_set, dtype=theano.config.floatX)) # Data
train_set_y = theano.shared(numpy.asarray(train_set, dtype=theano.config.floatX)) # Labels
# Cast labels into int
train_set_y = theano.tensor.cast(train_set_y, 'int32')

我的问题是如何访问train_set_x和train_set_y中的数据。数据集中的每个图像都是 28 * 28 像素。这是一个长度为 784 的向量,向量中的所有元素都是浮点型,表示 0.0 到 1.0 之间的值(包括 0.0 和 1.0)。标签被转换为 int 因为它代表与每个矢量图像关联的标签,并且是 0 到 9 之间的值。我希望能够循环 train_set_x 矩阵图像和 train_set_y 标签以查看每个图像及其标签的数据分别并最终将图像绘制在屏幕上。

最佳答案

首先,train_set_xtrain_set_y (在转换之前)train_set 是同一列火车的单独副本放。所以我想你过于简化了你的例子,正如你所说的那样,train_set_x是输入,train_set_y是相应的标签,这对代码来说没有意义。

您问题的答案取决于mnist.pkl.gz的包含。你在哪里得到它?来自深度学习教程?对于我的回答,我假设 train_set 是一个 2d numpy ndarray。这样您就可以使用与 DLT 中的文件不同的 mnist.pkl.gz 文件。

有了这个假设,您可以调用train_set_x.get_value(),这将返回共享变量中ndarray的副本。如果您不需要副本,可以执行 train_set_x.get_value(borrow=True) ,这样就可以了。如果共享变量在GPU上,这会将数据从GPU复制到CPU,但如果数据已经在CPU上,则不会复制数据。

train_set_y 是一个 Theano 图,而不是 Theano 共享变量。因此您无法对其调用 get_value() 。您需要编译并运行给出train_set_y的图。如果您只想评估一次,可以调用 train_set_y.eval() 作为编译和运行它的快捷方式,因为它除了共享变量之外不接受任何输入。

所以你可以这样做:

for x,y in zip(train_set_x.get_value(), train_set_y.eval()):
print x, y

关于python-2.7 - 访问 Theano 共享变量的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19489259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com