Wie mein dataset in einem .pkl-Datei genau in dem format und Struktur der Daten, die in "mnist.pkl.gz"?
Ich versuche, die Theano Bibliothek in python zu tun, einige Experimente mit Deep belief Networks. Ich benutze den code in diese Adresse: DBN vollständige code. Dieser code verwendet die MNIST Handschriftliche Datenbank. Diese Datei ist bereits in Gurke-format.
Es ist unpicked in:
- train_set
- valid_set
- test_set
Welches weiter unpickled in:
- train_set_x, train_set_y = train_set
- valid_set_x, valid_set_y = valid_set
- test_set_x, test_set_y = test_set
Bitte kann mir jemand den code, dass Konstrukte dieser Datensatz um meine eigenen erstellen?
Der DBN Beispiel verwende ich die Daten in diesem format und ich weiß nicht, wie es zu tun.
wenn jemand eine Idee hat wie man das beheben kann, bitte mir mitteilen.
Hier ist mein code:
from datetime import datetime
import time
import os
from pprint import pprint
import numpy as np
import gzip, cPickle
import theano.tensor as T
from theano import function
os.system("cls")
filename = "completeData.txt"
f = open(filename,"r")
X = []
Y = []
for line in f:
line = line.strip('\n')
b = line.split(';')
b[0] = float(b[0])
b[1] = float(b[1])
b[2] = float(b[2])
b[3] = float(b[3])
b[4] = float(b[4])
b[5] = float(b[5])
b[6] = float(b[6])
b[7] = float(b[7])
b[8] = float(b[8])
b[9] = float(b[9])
b[10] = float(b[10])
b[11] = float(b[11])
b[12] = float(b[12])
b[13] = float(b[13])
b[14] = float(b[14])
b[15] = float(b[15])
b[17] = int(b[17])
X.append(b[:16])
Y.append(b[17])
Len = len(X);
X = np.asmatrix(X)
Y = np.asarray(Y)
sizes = [0.8, 0.1, 0.1]
arr_index = int(sizes[0]*Len)
arr_index2_start = arr_index + 1
arr_index2_end = arr_index + int(sizes[1]*Len)
arr_index3_start = arr_index2_start + 1
"""
train_set_x = np.array(X[:arr_index])
train_set_y = np.array(Y[:arr_index])
val_set_x = np.array(X[arr_index2_start:arr_index2_end])
val_set_y = np.array(Y[arr_index2_start:arr_index2_end])
test_set_x = np.array(X[arr_index3_start:])
test_set_y = np.array(X[arr_index3_start:])
train_set = train_set_x, train_set_y
val_set = val_set_x, val_set_y
test_set = test_set_x, test_set_y
"""
x = T.dmatrix('x')
z = x
t_mat = function([x],z)
y = T.dvector('y')
k = y
t_vec = function([y],k)
train_set_x = t_mat(X[:arr_index].T)
train_set_y = t_vec(Y[:arr_index])
val_set_x = t_mat(X[arr_index2_start:arr_index2_end].T)
val_set_y = t_vec(Y[arr_index2_start:arr_index2_end])
test_set_x = t_mat(X[arr_index3_start:].T)
test_set_y = t_vec(Y[arr_index3_start:])
train_set = train_set_x, train_set_y
val_set = val_set_x, val_set_y
test_set = test_set_x, test_set_y
dataset = [train_set, val_set, test_set]
f = gzip.open('..\..\..\data\dex.pkl.gz','wb')
cPickle.dump(dataset, f, protocol=-1)
f.close()
pprint(train_set_x.shape)
print('Finished\n')
- Sie können einfach zu implementieren-Python-basiert auf der Beschreibung unten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein .pkl-Datei ist nicht notwendig, sich den code von der Theano tutorial zu den eigenen Daten. Sie brauchen nur zu imitieren, um Ihre Daten-Struktur.
Quick fix
Suchen Sie die folgenden Zeilen. Es ist die Linie 303 auf DBN.py.
Ersetzen Sie mit Ihrem eigenen
train_set_x
undtrain_set_y
.Diese anpassen, um Ihre input-Daten und den code, den Sie verwenden.
Das gleiche funktioniert für cA.py, dA.py und SdA.py aber Sie verwenden Sie nur
train_set_x
.Blick für Orte wie
n_ins=28 * 28
wo mnist Bildgrößen sind hardcoded. Ersetzen28 * 28
mit Ihrer eigenen Reihe von Spalten.Erklärung
Dies ist, wo Sie Ihre Daten in einem format, dass Theano arbeiten kann.
shared()
stellt sich ein numpy-array in der Theano-format, entworfen für Effizienz auf GPUs.dtype='float64'
wird erwartet, Theano arrays.Mehr details auf basic-tensor-Funktionalität.
.pkl-Datei
Den .pkl-Datei ist eine Möglichkeit zum speichern Ihrer Daten-Struktur.
Können Sie Ihre eigenen erstellen.
Mehr details auf laden und speichern.
Den eingelegten Datei repräsentiert ein Tupel von 3 Listen : die Ausbildung, die validation set und Test-set. (Zug, val, test)
Diese können helfen:
Dies ist die Funktion die ich verwendet habe. Kann sich ändern, nach Informationen Ihrer Datei.