#python #numpy #tensorflow #deep-learning
#питон #тупица #тензорный поток #глубокое обучение
Вопрос:
привет, ребята, в настоящее время изучают глубокое обучение и машинное обучение
я тоже прочитал некоторые объяснения на github, изучая код
но нет никакого объяснения того, как они отделяют тестовые данные от этого кода(нижняя часть, где есть комментарий # declare data for training and validation, if you want, you can seperate testset from this
# 1. Creating Datasets # define temporary empty list for load data = [] label = [] Totalnb = 0 # Load Dataset for i in range(n_labels): nb = 0 # Counting datasets in each labels for root, dirs, files in os.walk('Progress/DataLatihBaru/' str(i 1)): # set directory for name in dirs: nb = nb 1 print(i,"Label number of Dataset is:",nb) Totalnb = Totalnb nb # by Counting size, cross subfolder and read image data, resize image, and append list for j in range(nb): temp = [] for k in range(timesteps): # name = 'NormalizedCascaded/' str(i 1) '/' str(j 1) '/' str(k 1) '.jpg' name = 'Progress/DataLatihBaru/' str(i 1) '/' str(j 1) '/' 'a (' str(k 1) ')' '.jpg' img = cv2.imread(name) res = cv2.resize(img, dsize=(img_col, img_row), interpolation=cv2.INTER_CUBIC) temp.append(res) label.append(i) data.append(temp) print("Total Number of Data is",Totalnb) # Convert List to numpy array, for Keras use Train_label = np.eye(n_labels)[label] # One-hot encoding by np array function Train_data = np.array(data) print("Dataset shape is",Train_data.shape, "(size, timestep, column, row, channel)") print("Label shape is",Train_label.shape,"(size, label onehot vector)") # shuffling dataset for input fit function # if don`t, can`t train model entirely x = np.arange(Train_label.shape[0]) np.random.shuffle(x) # same order shuffle is needed Train_label = Train_label[x] Train_data = Train_data[x] # declare data for training and validation, if you want, you can seperate testset from this X_train=Train_data[0:Totalnb,:] Y_train=Train_label[0:Totalnb]
может ли кто-нибудь помочь мне, чтобы я мог понять эту часть того, как я должен отделить данные от теста с небольшим объяснением?
большое вам спасибо !
Ответ №1:
Поскольку Train_label
и Train_data
уже перетасованы, вы можете просто изменить диапазон для разделения поезда-теста.
train_size = 0.8 X_train=Train_data[:int(Totalnb * TRAIN_RATIO),:] Y_train=Train_label[:int(Totalnb * TRAIN_RATIO)] X_test=Train_data[int(Totalnb * TRAIN_RATIO):,:] Y_test=Train_label[int(Totalnb * TRAIN_RATIO):]
Или используйте train_test_split
из sklearn
:
from sklearn.model_selection import train_test_split X_train, X_test, Y_train, Y_test = train_test_split(Train_data, Train_label, test_size=0.2)
Комментарии:
1. Хии Мин спасибо за ваш ответ, Если я могу что-то спросить, из кода , который вы даете в X_train=Train_data[:int(Totalnb * TRAIN_RATIO),:] и т. Д., Можете ли вы объяснить, как я узнаю, сколько потребуется тестовых данных? или я просто меняю «TRAIN_RATIO» столько, сколько хочу?
2. Да, как показано в коде,
TRAIN_RATIO
будет использоваться для расчета количества записей для использования в обучающем наборе. А остальное будет в тестовом наборе. Вам нужно использоватьint()
, как будет продуктfloat
.3. итак, если я хочу использовать 10% для тестовых данных, я ставлю 5% в x и 5% в y?
4. НЕТ, ты пользуешься
train_size = 0.9
. X и y должны иметь одинаковую длину в наборе тестов (и обучающем наборе).5. я вижу, поэтому, например, если я хочу использовать свой размер поезда 90% и размер теста 10%, это будет X_test=Train_data[int(Totalnb * 0.1):,:] для x и y в тесте, большое спасибо за вашу помощь, сэр !