2015-05-29 2 views
2

Я пытаюсь создать набор данных, подобный mnist.pkl.gz, реализованный в реализации anano logistic_sgd.py. Ниже приведен фрагмент кода.Ошибка Python Numpy: ValueError: установка элемента массива с последовательностью

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") 

Сообщение об ошибке: Traceback (самый последний вызов последнего):

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. 

CSV файл содержит два поля .. имя изображения, классификация этикетка при запуске этого интерпретатор Python, кажется, работает для меня .. следующим образом .. Я не получаю сообщение об ошибке, устанавливая элемент массива с последовательностью здесь.

--------- python inte Выход rpreter ----------

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.]]) 

Даже если я бегу тот же набор инструкций (логически), когда я бегу sample.py, я получаю ValueError: установка элемента массива с последовательностью .. Я пытаюсь понять это поведение .. любая помощь будет замечательной.

+1

Пожалуйста, всегда включайте полный ответ в свой вопрос. – cel

+0

Не говорите нам об ошибке. Покажите нам, где это произошло. – hpaulj

+0

сделал редактирование..Я пробовал с gdb. Но не было ни одного стека – ssh99

ответ

3

Проблема, вероятно, похожа на проблему this question.

Вы пытаетесь создать матрицу значений пикселей со строкой на изображение. Но каждое изображение имеет разный размер, поэтому количество пикселей в каждой строке отличается.

Вы не можете создать массив с чередованием «зазубренный» в numpy - каждая строка должна иметь одинаковую длину.

Вам нужно будет поместить каждую строку в длину самого большого изображения.

+0

P.S. если вы только что искали «numpy», задали элемент массива с последовательностью «« самый первый результат (я вижу) в Google - это вопрос StackOverflow, с которым я связан. –

+0

No. Все изображения одинакового размера .. Его работа для меня в интерпретаторе python .. Не работает, когда я запускаю его как файл .. – ssh99

+0

Ваш пример интерпретатора Python показывает то же изображение, добавляемое много раз, не так много разных изображений. –

Смежные вопросы