Я тренирую простую сверточную нейронную сеть (CNN), которая должна выполнять двоичную классификацию.Я использую пакет keras.Что мне нужно, так это то, что мой тренировочный набор не сбалансированНапример, один из классов должен быть обучен с 900 изображениями, а другой - только с 300 изображениями.
Я использую следующий код:
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
classifier = Sequential()
classifier.add(Conv2D(32, (3, 3),
input_shape=(64, 64, 3),
activation='relu'))
classifier.add(MaxPooling2D(pool_size=(2, 2)))
classifier.add(Flatten())
classifier.add(Dense(units=128, activation='relu'))
classifier.add(Dense(units=1, activation='sigmoid'))
classifier.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
training_set = train_datagen.flow_from_directory('dataset/training_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary')
test_set = test_datagen.flow_from_directory('dataset/test_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary')
classifier.fit_generator(training_set,
steps_per_epoch=1200,
epochs=30,
validation_data=test_set,
validation_steps=50)
Сейчасмодель обучается с размером batch_size 32. Я предполагаю, что это означает, что требуется 16 обучающих примеров из одного класса и 16 из другого?Мне нужно взять 24 учебных примера из одного класса и 8 примеров из другого.Возможно, мне следует каким-то образом изменить функцию flow_from_directory (), касающуюся набора обучающих данных.К сожалению, это никак не связано с документацией keras.У вас есть предложения?