#python #tensorflow #keras
Вопрос:
Я пытаюсь импортировать все 60 000 изображений (50 000 для обучения и 10 000 для тестирования) в каталог (местоположение каталога известно) в Python для классификации изображений с использованием TensorFlow. Я хочу импортировать все изображения и позволить им
path = /home/user/mydirectory
Я пробую код:
import numpy as np
import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
from keras.utils import np_utils
from PIL import Image
import glob
image_list = []
for filename in glob.glob(r'/home/user/mydirectory*.gif'): #assuming gif
im=Image.open(filename)
image_list.append(im)
(x_train, y_train)=image_list()
(x_test, y_test)=image_list()
Однако ошибка есть TypeError: 'list' object is not callable
…
Ответ №1:
Тебе следовало бы
... = image_list
в последних 2 строках выше вместо
... = image_list()
поскольку это список, а не вызываемая функция.
Ответ №2:
Вы вызываете список image_list()
в последней и предпоследней строке. Вы пытаетесь разделить на поезд и ярлык, но у вас нет добавленной категории image_list
.
Вы можете создать папку с именем категории; например, предположим, что у вас есть два класса, собака и кошка, затем вы можете создать каталог обучения, например:
home/usr/mydirectory/train/cat
home/usr/mydirectory/train/dog
и используйте Генератор данных изображений:
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
training_set =train_datagen.flow_from_directory(
'home/usr/mydirectory/train/',
target_size = (64, 64),
batch_size = 32,
class_mode = 'binary')
Аналогично, для тестовых данных вы можете создать каталог с тестовыми изображениями и хранить изображения с категорией в качестве имени папки.
Комментарии:
1. Спасибо! Как насчет того, чтобы у меня было 10 занятий, а не 2?
2. вы можете создать 10 различных каталогов или создать CSV-файл, в котором первый столбец содержит имя изображения, а второй столбец содержит метку
3. Можете ли вы написать код о том, как создать CSV-файл? Спасибо!
4. Но для набора обучающих данных. Я не знал этикетки для каждого изображения. Как их обозначить?
5. Без ярлыка, как вы будете обучать свой классификатор? Что вы хотите классифицировать?
Ответ №3:
В вашем коде вы пытаетесь вызвать список как функцию, которая выдает ошибку. Я думаю, что приведенный ниже код может помочь вам получить два подмножества для ваших данных.
import numpy as np
import random
import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
from keras.utils import np_utils
from PIL import Image
import glob
image_list = []
for filename in glob.glob(r'/home/user/mydirectory*.gif'): #assuming gif
im=Image.open(filename)
image_list.append(im)
random.shuffle(image_list) # This line now has shuffled your list(inplace operation)
n = len(image_list)
train_data_len = int(n*0.83) # Roughly 50k images
train_data = images_list[:train_data_len] # getting images upto 50k index
test_data = images[train_data_len:] # getting rest of the images
Существуют и другие способы обработки данных. Для начала я нашел это легким делом.
Комментарии:
1. Как насчет того, чтобы у меня было два разных каталога? Один предназначен для обучения, а другой-для тестирования?
2. Вот ошибка, основанная на вашем коде:
NameError: name 'random' is not defined