TFLearn: Создайте набор тестов для поездов, используя только tflearn

Я использую свой собственный набор данных и хочу создать глубокую нейронную сеть с помощью tflearn.

Это часть моего кода.

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

¿Как я могу выполнить функцию в TFLearn, чтобы разделить X, Y и получить train_X, test_X, train_Y, test_Y?

Я знаю, как работать с numpy и другими библиотеками, но я бы хотел использовать tflearn.


person Marc    schedule 31.08.2017    source источник
comment
Если вы можете сделать это в numpy, я полагаю, вы знакомы с нарезкой. Tensorflow реализует функцию среза для тензоров.   -  person gionni    schedule 31.08.2017
comment
Я не знаю этого функционала. Я бы хотел заняться TFLearn и использовать случайные выборки. Это возможно?   -  person Marc    schedule 31.08.2017
comment
Вы можете использовать тензорный поток вместе с tflearn, я думаю, поэтому tflearn не реализует нарезку, но я могу ошибаться ...   -  person gionni    schedule 31.08.2017


Ответы (2)


В методе fit для модели tflearn.DNN в tflearn (http://tflearn.org/models/dnn/), вы можете установить для параметра validation_set значение с плавающей запятой меньше 1, и тогда модель автоматически разделит ваш ввод в наборе для обучения и проверки во время обучения.

Пример

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
     

Это создаст набор проверки во время обучения, который отличается от набора тестов. Если вам просто нужен поезд и тестовый набор, я рекомендую взглянуть на train_test_split из sklearn, которая также может разделить ваши данные за вас.

person Nicki Skafte    schedule 21.12.2017
comment
Ага! Это ответ, который я искал - person Marc; 24.01.2018

Я думаю, ответ от Ники - самое простое решение.

Но еще одно простое решение - использовать sklearn и train_test_split ()

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)

Или версия numpy:

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

Так что это ваш выбор, удачного кодирования :)

person 5v3n b0d3m3r    schedule 23.01.2018