早教吧 育儿知识 作业答案 考试题库 百科 知识分享

sharedx=theano.shared(numpy.asarray(datax,dtype=theano.config.floatX))这句话什么意思?sharedx=theano.shared(numpy.asarray(datax,dtype=theano.config.floatX))什么意思呢?floatX是数据类型吧?为什么是floatX不是float呢?as

题目详情
shared_x = theano.shared(numpy.asarray(data_x, dtype=theano.config.floatX))这句话什么意思?

shared_x = theano.shared(numpy.asarray(data_x, dtype=theano.config.floatX))什么意思呢?

floatX是数据类型吧?为什么是floatX不是 float呢 ?

asarray什么函数,什么作用?array是向量,as表示什么呢?

求大神 详解.


▼优质解答
答案和解析
本学习指南不是一份机器学习的教程,但是首先我们会对其中的概念做一个简单的回顾,以确保我们在相同的起跑线上.大家还需要下载几个数据库,以便于跑这个指南里面的程序.
theano下载安装
在学习每一个算法的时候,大家都需要下载安装相应的文件,如果你想要一次下载所有的文件,可以通过下面这种方式
git clone git://github.com/lisa-lab/DeepLearningTutorials.git
数据库
MNIST数据集(mnist.pkl.gz)
MNIST数据集由手写的数字的图像组成,它分为了60,000训练数据和10,000个测试数据.在很多文献以及这个指南里面,官方的训练数据又进一步的分成50,000的训练数据和10,000的验证数据,以便于模型参数的选择.所有的图像都做了规范化的处理,每个图像的大小都是28*28.在原始数据中,图像的像素存成常用的灰度图(灰度区间0~255).
为了方便在python中调用改数据集,我们对其进行了序列化.序列化后的文件包括三个list,训练数据,验证数据和测试数据.list中的每一个元素都是由图像和相应的标注组成的.其中图像是一个784维(28*28)的numpy数组,标注则是一个0-9之间的数字.下面的代码演示了如何使用这个数据集.
import cPickle,gzip,numpy # Load the dataset f = gzip.open('mnist.pkl.gz','rb') train_set,valid_set,test_set = cPickle.load(f) f.close()
在使用这个数据集的时候,我们一般把它分成若干minibatch.我们也鼓励你吧数据集存成共享变量,并根据minibatch的索引来访问它.这样做是为了在GPU上运行代码的方便.当复制代码到GPU上时,数据会有很大的重叠.如果你按照程序请求来复制数据,而不是通过共享变量的方式,GPU上面的程序就不会比运行在CPU上面的快.如果你运用theano的共享数据,就使得theano可以通过一个调用复制所有数据到GPU上.(有些说明没翻译,对GPU的原理不是很理解-译者)
到目前为止,数据保存到了一个变量中,minibatch则是这个变量的一系列的切片,它最自然的定义方法是这个切片的位置和大小.在我们的设置汇总,每个块的大小都是固定的,所以函数只要通过切片的位置就可以访问每个minibatch.下面的代码演示了如果存储数据及minibatch.
def shared_dataset(data_xy):""" Function that loads the dataset into shared variables The reason we store our dataset in shared variables is to allow Theano to copy it into the GPU memory (when code is run on GPU).Since copying data into the GPU is slow,copying a minibatch everytime is needed (the default behaviour if the data is not in a shared variable) would lead to a large decrease in performance.""" data_x,data_y = data_xy shared_x = theano.shared(numpy.asarray(data_x,dtype=theano.config.floatX)) shared_y = theano.shared(numpy.asarray(data_y,dtype=theano.config.floatX)) # When storing data on the GPU it has to be stored as floats # therefore we will store the labels as ``floatX`` as well # (``shared_y`` does exactly that).But during our computations # we need them as ints (we use labels as index,and if they are # floats it doesn't make sense) therefore instead of returning # ``shared_y`` we will have to cast it to int.This little hack # lets us get around this issue return shared_x,T.cast(shared_y,'int32') test_set_x,test_set_y = shared_dataset(test_set) valid_set_x,valid_set_y = shared_dataset(valid_set) train_set_x,train_set_y = shared_dataset(train_set) batch_size = 500 # size of the minibatch # accessing the third minibatch of the training set data = train_set_x[2 * 500:3 * 500] label = train_set_y[2 * 500:3 * 500]
符号
数据集符号
首先,我们用 `\mathbf{D}`来表示数据集,为了区分的方便,训练,验证和测试数据可以分别用`\mathbf{D_{train}}`,`\mathbf{D_{valid}}`,`\mathbf{D_{test}}`来表示.
这个行么,打了好长时间啊,希望我的回答可以帮到你!