Python Numpy Error:ValueError:使用序列设置数组元素
我正在尝试构建一个类似于ano logistic_sgd.py实现中提供的mnist.pkl.gz的数据集。下面是我的代码片段Python Numpy Error:ValueError:使用序列设置数组元素,python,arrays,numpy,theano,mnist,Python,Arrays,Numpy,Theano,Mnist,我正在尝试构建一个类似于ano logistic_sgd.py实现中提供的mnist.pkl.gz的数据集。下面是我的代码片段 import numpy as np import csv from PIL import Image import gzip, cPickle import theano from theano import tensor as T def load_dir_data(csv_file=""): print(" reading: %s" %csv_file)
import numpy as np
import csv
from PIL import Image
import gzip, cPickle
import theano
from theano import tensor as T
def load_dir_data(csv_file=""):
print(" reading: %s" %csv_file)
dataset=[]
labels=[]
cr=csv.reader(open(csv_file,"rb"))
for row in cr:
print row[0], row[1]
try:
image=Image.open(row[0]+'.jpg').convert('LA')
pixels=[f[0] for f in list(image.getdata())]
dataset.append(pixels)
labels.append(row[1])
del image
except:
print("image not found")
ret_val=np.array(dataset,dtype=theano.config.floatX)
return ret_val,np.array(labels).astype(float)
def generate_pkl_file(csv_file=""):
Data, y =load_dir_data(csv_file)
train_set_x = Data[:1500]
val_set_x = Data[1501:1750]
test_set_x = Data[1751:1900]
train_set_y = y[:1500]
val_set_y = y[1501:1750]
test_set_y = y[1751:1900]
# Divided dataset into 3 parts. I had 2000 images.
train_set = train_set_x, train_set_y
val_set = val_set_x, val_set_y
test_set = test_set_x, val_set_y
dataset = [train_set, val_set, test_set]
f = gzip.open('file.pkl.gz','wb')
cPickle.dump(dataset, f, protocol=2)
f.close()
if __name__=='__main__':
generate_pkl_file("trainLabels.csv")
错误消息:
回溯(最近一次呼叫最后一次):
尽管我运行的是同一组指令(逻辑上),但当我运行sample.py时,我会得到valueError:使用序列设置数组元素。。我试图理解这种行为。。任何帮助都会很好。问题可能与您的类似 您试图创建一个像素值矩阵,每个图像有一行。但是每个图像都有不同的大小,因此每行中的像素数是不同的 不能在numpy中创建“锯齿”浮点型数组——每一行的长度必须相同
您需要将每行填充到最大图像的长度。请始终在问题中包含完整的错误回溯。不要只告诉我们错误。显示它发生的位置。进行了编辑..我尝试使用gdb。但在这两种情况下,
数据集
看起来是什么样子的都没有。我们不需要所有的值,但足以看到是否有差异。图像、级别示例、2 10_左、0 10_右、0 13_左、0 13_右、0 15_左、1 15_右、2 16_左、4 16_右,4这是一个csv文件,每行只有两个条目。。如果在解释器中单独加载图像并附加像素,我可以执行np.array(dataset,dtype=theano.config.floatX)。。但是当我在文件中运行它的时候没有。如果您刚刚搜索了'numpy',将数组元素设置为一个序列“',那么Google中的第一个结果(我看到)就是我链接到的StackOverflow问题。否。。所有图像的大小都相同。。它在python解释器中为我工作。。当我以文件的形式运行它时不会。您的Python解释器示例显示了多次添加相同的图像,而不是许多不同的图像。对不起,我的不好。。我有两种不同的图像大小。。我会换的,会检查的。。谢谢
File "convert_dataset_pkl_file.py", line 50, in <module>
generate_pkl_file("trainLabels.csv")
File "convert_dataset_pkl_file.py", line 29, in generate_pkl_file
Data, y =load_dir_data(csv_file)
File "convert_dataset_pkl_file.py", line 24, in load_dir_data
ret_val=np.array(dataset,dtype=theano.config.floatX)
ValueError: setting an array element with a sequence.
image=Image.open('sample.jpg').convert('LA')
pixels=[f[0] for f in list(image.getdata())]
dataset=[]
dataset.append(pixels)
dataset.append(pixels)
dataset.append(pixels)
dataset.append(pixels)
dataset.append(pixels)
b=numpy.array(dataset,dtype=theano.config.floatX)
b
array([[ 2., 0., 0., ..., 0., 0., 0.],
[ 2., 0., 0., ..., 0., 0., 0.],
[ 2., 0., 0., ..., 0., 0., 0.],
[ 2., 0., 0., ..., 0., 0., 0.],
[ 2., 0., 0., ..., 0., 0., 0.]])