Python-Numpy Error: ValueError: Einstellung der ein array-element mit einer Sequenz
Ich versuche zu bauen, ein dataset ähnlich mnist.pkl.gz in theano logistic_sgd.py Umsetzung. Folgendes ist mein code-snippet.
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")
Fehlermeldung:
Traceback (most recent call last):
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-Datei enthält zwei Felder.. Bild-name, Klassifizierung label
wenn ausgeführt wird, das in python-interpreter, es scheint zu funktionieren für mich.. wie folgt.. ich bekomme kein Fehlermeldung besagt, dass das setzen einer array-element mit einer Sequenz hier..
---------python-interpreter Ausgabe----------
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.]])
Obwohl ich bin mit demselben Satz von Anweisungen (logisch), wenn ich sample.py bekomme ich valueError: Einstellung der ein array-element mit einer Sequenz.. ich versuche, dieses Verhalten zu verstehen.. jede Hilfe wäre Super..
Nicht Sag uns die Fehlermeldung. Zeigen Sie uns, wo es aufgetreten ist.
bearbeitet..ich habe versucht mit gdb. Aber es war kein stack
Was bedeutet
dataset
Aussehen - in beiden Fällen. Wir brauchen nicht alle Werte, aber genug, um zu sehen, ob es einen Unterschied gibt.Bild,level Probe,2 10_left,0 10_right,0 13_left,0 13_right,0 15_left,1 15_right,2 16_left,4 16_right,4 csv-Datei mit nur zwei Einträge pro Zeile.., Wenn ein laden die Bilder einzeln in die Dolmetscher-und append-Pixel, die ich ausführen kann, np.array(dataset,dtype=theano.config.floatX).. Aber Nein, wenn ich es in Datei..
InformationsquelleAutor ssh99 | 2015-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist wohl ähnlich wie diese Frage.
Sie versuchen, erstellen eine matrix von pixel-Werten mit einer Zeile pro Bild. Aber jedes Bild hat eine andere Größe, so dass die Anzahl der Pixel in jeder Zeile unterschiedlich ist.
Können Sie nicht erstellen Sie eine "gezackte" float-Typ-array in numpy-jede Zeile muss die gleiche Länge.
Müssen Sie die pad-jede Zeile, die Länge der größten Bild.
Nein.. Alle Bilder sind von der gleichen Größe.. Seine arbeiten für mich in python-interpreter.. Nicht wenn ich es als Datei..
Ihr Python-interpreter Beispiel zeigt das gleiche Bild viele Male, nicht viele verschiedene Bilder.
tut mir Leid mein schlechtes.. ich habe zwei unterschiedliche Bild-Größen.. ich werde mich ändern und wird es prüfen.. Danke
Gearbeitet danke..
InformationsquelleAutor Daniel Renshaw