首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何格式化深度信念神经网络的训练/测试集

如何格式化深度信念神经网络的训练/测试集
EN

Stack Overflow用户
提问于 2015-07-30 02:47:19
回答 1查看 375关注 0票数 4

我正在尝试使用this page实现代码。但是我不知道如何正确地格式化数据(训练集/测试集)。我的代码:

代码语言:javascript
复制
    numpy_rng = numpy.random.RandomState(123)
    dbn = DBN(numpy_rng=numpy_rng, n_ins=2,hidden_layers_sizes=[50, 50, 50],n_outs=1)

    train_set_x = [
        ([1,2],[2,]), #first element in the tuple is the input, the second is the output
        ([4,5],[5,])
    ]

    testing_set_x = [
        ([6,1],[3,]), #same format as the training set
    ]

    #when I looked at the load_data function found elsewhere in the tutorial (I'll show the code they used at the bottom for ease) I found it rather confusing, but this was my first attempt at recreating what they did
    train_set_xPrime = [theano.shared(numpy.asarray(train_set_x[0][0],dtype=theano.config.floatX),borrow=True),theano.shared(numpy.asarray(train_set_x[0][1],dtype=theano.config.floatX),borrow=True)]

    pretraining_fns = dbn.pretraining_functions(train_set_x=train_set_xPrime,batch_size=10,k=1)

它产生了这个错误:

代码语言:javascript
复制
    Traceback (most recent call last):
      File "/Users/spudzee1111/Desktop/Code/NNChatbot/DeepBeliefScratch.command", line 837, in <module>
        pretraining_fns = dbn.pretraining_functions(train_set_x=train_set_xPrime,batch_size=10,k=1)
      File "/Users/spudzee1111/Desktop/Code/NNChatbot/DeepBeliefScratch.command", line 532, in pretraining_functions
        n_batches = train_set_x.get_value(borrow=True).shape[0] / batch_size
    AttributeError: 'list' object has no attribute 'get_value'

我不知道输入应该如何格式化。我尝试在列表中使用theano.shared,因此它将是:

代码语言:javascript
复制
    train_set_xPrime = theano.shared([theano.shared(numpy.asarray(train_set_x[0][0],dtype=theano.config.floatX),borrow=True),theano.shared(numpy.asarray(train_set_x[0][1],dtype=theano.config.floatX),borrow=True)],borrow=True)

但后来它又说:

代码语言:javascript
复制
    Traceback (most recent call last):
      File "/Users/spudzee1111/Desktop/Code/NNChatbot/DeepBeliefScratch.command", line 834, in <module>
        train_set_xPrime = theano.shared([theano.shared(numpy.asarray(train_set_x[0][0],dtype=theano.config.floatX),borrow=True),theano.shared(numpy.asarray(train_set_x[0][1],dtype=theano.config.floatX),borrow=True)],borrow=True) #,borrow=True),numpy.asarray(train_set_x[0][1],dtype=theano.config.floatX),borrow=True))
      File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/theano/compile/sharedvalue.py", line 228, in shared
        (value, kwargs))
    TypeError: No suitable SharedVariable constructor could be found. Are you sure all kwargs are supported? We do not support the parameter dtype or type. value="[<TensorType(float64, vector)>, <TensorType(float64, vector)>]". parameters="{'borrow': True}"

我尝试了其他组合,但都不起作用。

EN

回答 1

Stack Overflow用户

发布于 2015-08-28 02:38:30

这应该是可行的

代码语言:javascript
复制
numpy_rng = numpy.random.RandomState(123)
dbn = DBN(numpy_rng=numpy_rng, n_ins=2, hidden_layers_sizes=[50, 50, 50], n_outs=1)

train_set = [
    ([1,2],[2,]),
    ([4,5],[5,])
]

train_set_x = [train_set[i][0] for i in range(len(train_set))]
nparray = numpy.asarray(train_set_x, dtype=theano.config.floatX)
train_set_x = theano.shared(nparray, borrow=True)

pretraining_fns = dbn.pretraining_functions(train_set_x=train_set_x, batch_size=10, k=1)

方法pretraining_fns期望将大小的共享变量(样本数,输入的维度)作为输入。您可以通过查看MNIST数据集的形状来检查这一点,该数据集是本例的标准输入

它不接受列表作为输入,因为这种方法只适用于预训练函数。DBN是使用无监督学习算法进行预训练的,因此使用标注没有意义

此外,用于生成numpy数组的输入列表没有任何意义。train_set_x[0][0]只产生第一个训练示例。您希望train_set_xPrime拥有所有的训练示例。即使你做了train_set_x[0],你也会有第一个训练例子,但是有标签

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31708721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档