Собака против кошки: как помечены данные? - PullRequest
0 голосов
/ 06 сентября 2018

Я строю классификатор «собака против кошки», но не могу понять, где существуют данные классификации. В случае титанического соревнования по kaggle данные существовали в колонке Survived (0 или 1).

Однако, как CNN узнает, кого классифицируют как собаку или кошку? Я разместил свой код ниже.

from keras import layers 
from keras import models 

model=models.Sequential()
model.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(150,150,3)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

from keras import optimizers

model.compile(loss='binary_crossentropy',
optimizer=optimizers.RMSprop(lr=1e-4),
metrics=['acc'])
from keras.preprocessing.image import ImageDataGenerator

train_datagen=ImageDataGenerator(rescale=1./255)
test_datagen=ImageDataGenerator(rescale=1./255)


train_generator=train_datagen.flow_from_directory(train_dir,
target_size=(150,150),
batch_size=20,
class_mode='binary')

train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(150, 150),
batch_size=20,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
validation_dir,
target_size=(150, 150),
batch_size=20,
class_mode='binary')



history=model.fit_generator(train_generator,
steps_per_epoch=100,epochs=30,
validation_data=validation_generator,
validation_steps=50)






train_dir = os.path.join(base_dir, 'train')
os.mkdir(train_dir)

Я понимаю, что этот каталог создается, и в него загружаются все обучающие файлы (для него есть отдельный код). Кроме того, в этом процессе он разделяет изображения на папки cat и dog. Является ли это аналогом титанической колонии «Выживший»?

1 Ответ

0 голосов
/ 06 сентября 2018

Класс ImageDataGenerator имеет два метода flow() и flow_from_directory() для чтения изображений из большого массива numpy и папок, содержащих изображения .

Таким образом, в случае использования функции flow_from_directory() вам не нужно указывать метку, а сама keras делает все. Вы просто должны поместить свои поезда и проверочные изображения в папки и подпапки, например так:

/train
      |
      /cat
         /cat1.jpg
         /cat2.jpg
      /dog
         /dog1.jpg
         /dog2.jpg

Таким образом, при таком расположении папок функция flow_from_directory() сама выполняет маркировку.

...