Я пробовал двоичную классификацию с использованием CNN.Выполнено с тем же кодом, который описан в https://www.udemy.com/deeplearning/. Но когда я запускаю код на моем ПК (8 ГБ ОЗУ ЦП), обучение выполняется очень медленно с одним элементом в каждой эпохе, хотя я и далразмер пакета 32. Однако он работает так же хорошо на компьютере инструктора (даже если он тоже использует процессор).Набор поездов состоит из 8000 изображений и испытательного набора с 2000 изображениями.Я знаю, что для таких больших данных обработка определенно будет медленной, но я замечаю, что она намного медленнее, чем обычно.
from keras.layers import Dense
from keras.layers import Convolution2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.models import Sequential
classifier=Sequential()
classifier.add(Convolution2D(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), #since 64,64,pixels
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=8000,
epochs=25,
validation_data=test_set,
validation_steps=2000)
Поток от предварительной обработки изображений на основе каталогов выполняется, как описано в документации Keras., С Tensorflow в качестве бэкэнда.
Спасибо!