为什么Theano共享变量的输出是一个数组?

时间:2016-03-15 20:37:57

标签: python theano

我正在使用我自己的数据集来训练使用Theano的SdA,并使用以下代码:

train_set_x = theano.shared(np.asarray(x, type=theano.config.floatX))
train_set_y = T.cast(theano.shared(np.asarray(y,dtype=theano.config.floatX)), 'int32')

然后我用这段代码打印train_set_x和train_set_y:

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

这些是我的结果:

('x=', array([ 1., 0.36037669, 0., 0.06552909, 0.46260971,0.45968048,.27107092,  0.16942367,  0.09178392,  0.35540537, 0.38170689,  0.1973381 ,  0.22643969]))
('y=', 0)

正如您所看到的,输出是一个numpy数组。但是,当我在theano教程提供的SdK.py中打印MNIST数据集时,请使用以下代码:

datasets = load_data(dataset)

train_set_x, train_set_y = datasets[0]
valid_set_x, valid_set_y = datasets[1]
test_set_x, test_set_y = datasets[2]

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

我看到了这些结果:

x= [ 0.          0.          0.          0.          0.          0.          
  0.0703125   0.0703125   0.0703125   0.4921875   0.53125     0.68359375
  0.1015625   0.6484375   0.99609375  0.96484375  0.49609375  0.          ...

正如您所看到的,这不是一个numpy数组。您是否知道如何以我的ouyput看起来像Theano教程输出的方式修复我的代码和数据集?

1 个答案:

答案 0 :(得分:0)

看起来Theano教程是用Python3编写的,你使用的是Python 2.x.

要获得Python 2,x的相同输出格式,您可以在print之后删除括号。

a = numpy.asarray([1,2,3])
print ("x=", a)  # this will output ('x=', array([1, 2, 3]))
print "x=", a  # this will output x= [1 2 3]