pickle.load: 需要超过 2 个值才能解包
pickle.load: need more than 2 values to unpack
我已经完成了一个 .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()
感谢您的任何意见。
错误消息应该很明显,您已经腌制了一个包含 2 个元素的列表,因此您不能将其解压缩为 4 个名称。考虑(编造一些数据):
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
但是,这很容易补救,因为每个子列表中也有 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'
一般来说,你解包的东西必须有相同的形状:
In [45]: data = [[[1, 2], [3, 4, 5]],[6, [7, 8]]]
In [46]: (((a, b), (c, d, e)), (f, (g, h))) = data
In [47]: a,b,c,d,e,f,g,h
Out[47]: (1, 2, 3, 4, 5, 6, 7, 8)
我已经完成了一个 .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()
感谢您的任何意见。
错误消息应该很明显,您已经腌制了一个包含 2 个元素的列表,因此您不能将其解压缩为 4 个名称。考虑(编造一些数据):
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
但是,这很容易补救,因为每个子列表中也有 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'
一般来说,你解包的东西必须有相同的形状:
In [45]: data = [[[1, 2], [3, 4, 5]],[6, [7, 8]]]
In [46]: (((a, b), (c, d, e)), (f, (g, h))) = data
In [47]: a,b,c,d,e,f,g,h
Out[47]: (1, 2, 3, 4, 5, 6, 7, 8)