Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy Error:ValueError:使用序列设置数组元素_Python_Arrays_Numpy_Theano_Mnist - Fatal编程技术网

Python Numpy Error:ValueError:使用序列设置数组元素

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)

我正在尝试构建一个类似于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)
    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.]])