2017-08-31 9 views
0

ich meine eigenen Daten-Set bin mit und ich möchte ein Tief Neural Network mit tflearn zu tun.TFLearn: Erstellen Sie ein Zug Testset mit nur tflearn

Dies ist ein Teil meines Codes.

import tflearn 
from tflearn.data_utils import load_csv 

#Load the CSV File  
X, Y = load_csv('data.csv') 

#Split Data in train and Test with tflearn 

¿Wie kann ich eine Funktion in TFLearn tun X, Y zu spalten und train_X, test_X, train_Y, test_Y zu bekommen?

Ich weiß, wie mit numpy und anderen Bibliotheken zu tun, aber ich würde mit tflearn zu tun.

+0

Wenn Sie können es in numpy tun Ich nehme an, Sie sind mit dem Schneiden vertraut. Tensorflow Geräte [Slicing] (https://www.tensorflow.org/versions/r0.12/api_docs/python/array_ops/slicing_and_joining) Funktionalität für Tensoren. – gionni

+0

Ich kenne diese Funktionalität nicht. Ich würde gerne mit TFLearn machen und Stichproben verwenden. Ist das möglich? – Marc

+0

Sie können mit tflearn verwenden tensorflow toghether, ich denke, das ist, warum tflearn nicht Slicing nicht implementiert, aber ich könnte falsch sein ... – gionni

Antwort

1

Im fit Verfahren zum tflearn.DNN Modell in tflearn (http://tflearn.org/models/dnn/), können Sie die Option validation_set mit einem Schwimmer, weniger als 1, und dann wird das Modell aufgeteilt Ihre Eingabe automatisch in einem Trainings- und Validierungssatz, während des Trainings.

Beispiel

import tflearn 
from tflearn.data_utils import load_csv 

#Load the CSV File  
X, Y = load_csv('data.csv') 

# Define some network 
network = ... 

# Training 
model = tflearn.DNN(network, tensorboard_verbose=0) 
model.fit(X, Y, n_epoch=20, validation_set=0.1) # will use 10% for validation 

Diese eine Validierung während des Trainings festgelegt schaffen wird, die von einem Test-Set unterscheidet. Wenn Sie nur einen Zug und Test-Set wollen, empfehle ich einen Blick auf die train_test_split Funktion von sklearn nehmen, die auch Ihre Daten für Sie spalten können.

+0

Yeah! Es ist die Antwort, nach der ich gesucht habe – Marc

0

die Antwort von Nicki ist die einfachste Lösung, denke ich.

Aber eine weitere einfache Lösung ist sklearn und die train_test_split zu verwenden()

from sklearn.model_selection import train_test_split 
data, target = load_raw_data(data_size) # own method, data := ['hello','...'] target := [1 0 -1] label 
X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.33, random_state=42) 

Oder die numpy Version:

import numpy as np 
texts, target = load_raw_data(data_size) # own method, texts := ['hello','...'] target := [1 0 -1] label 
train_indices = np.random.choice(len(target), round(0.8 * len(target)), replace=False) 
test_indices = np.array(list(set(range(len(target))) - set(train_indices))) 
x_train = [x for ix, x in enumerate(texts) if ix in train_indices] 
x_test = [x for ix, x in enumerate(texts) if ix in test_indices] 
y_train = np.array([x for ix, x in enumerate(target) if ix in train_indices]) 
y_test = np.array([x for ix, x in enumerate(target) if ix in test_indices]) 

So ist es Ihre Wahl, glücklich Codierung :)