pickle.load:需要2个以上的值来解压缩

时间:2017-05-18 02:47:24

标签: python pickle conv-neural-network

我已经完成了.pkl文件的编写,但是当我尝试加载它时会出现错误。

            f = open('train.pkl')
            X, Y, X_test, Y_test = cPickle.load(f)

            X, Y ,X_test,Y_test=pickle.load(open("train.pkl","rb"))

两次尝试都失败了。编写.pkl文件的代码如下。 在循环内处理图像和标签:

            img_ndarray = numpy.asarray(img, dtype='float64')
            img_raw[i] = numpy.ndarray.flatten(img_ndarray)
            img_label[i]=numpy.asarray(name,dtype='float64')
            i=i+1

在循环外编写pickle文件:

            write_file = open('train.pkl', 'wb')
            cPickle.dump([[img_raw[0:4],img_label[0:4]], [img_raw[5:7], img_label[5:7]]],write_file, -1)
            write_file.close()

感谢您的任何意见。

1 个答案:

答案 0 :(得分:1)

错误信息应该显而易见,你已经腌制了一个包含2个元素的列表,因此你无法将其解压缩为4个名称。考虑(编写一些数据):

1. At the bottom left find async_upload.php file name.
2. Click it and go to Preview tab (see attached images).

但是,这很容易解决,因为每个子列表中都有2个项目:

In [35]: img_raw, img_label = range(10), 'abcdefghhijlmnop'

In [36]: [[img_raw[0:4],img_label[0:4]], [img_raw[5:7], img_label[5:7]]]
Out[36]: [[range(0, 4), 'abcd'], [range(5, 7), 'fg']]

In [37]: len([[img_raw[0:4],img_label[0:4]], [img_raw[5:7], img_label[5:7]]])
Out[37]: 2

它有效!

In [38]:  (X, Y) , (X_test, Y_test) = [[img_raw[0:4],img_label[0:4]], [img_raw[5:7], img_label[5:7]]]

一般来说,你解包的内容必须具有相同的形状:

In [41]: X
Out[41]: range(0, 4)

In [42]: Y
Out[42]: 'abcd'

In [43]: X_test
Out[43]: range(5, 7)

In [44]: Y_test
Out[44]: 'fg'