13 KiB
13 KiB
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras import backend as K
img_width, img_height = 224, 224
train_data_dir = 'v_data/train'
validation_data_dir = 'v_data/test'
nb_train_samples =400
nb_validation_samples = 100
epochs = 10
batch_size = 16
# check format
if K.image_data_format() == 'channels_first':
input_shape = (3, img_width, img_height)
else:
input_shape = (img_width, img_height, 3)
model = Sequential()
model.add(Conv2D(32, (2, 2), input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
train_datagen = ImageDataGenerator(
rescale=1. / 255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1. / 255)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='binary')
model.fit_generator(
train_generator,
steps_per_epoch=nb_train_samples // batch_size,
epochs=epochs,
validation_data=validation_generator,
validation_steps=nb_validation_samples // batch_size)
[1;31m---------------------------------------------------------------------------[0m [1;31mFileNotFoundError[0m Traceback (most recent call last) Input [1;32mIn [7][0m, in [0;36m<cell line: 9>[1;34m()[0m [0;32m 1[0m train_datagen [38;5;241m=[39m ImageDataGenerator( [0;32m 2[0m rescale[38;5;241m=[39m[38;5;241m1.[39m [38;5;241m/[39m [38;5;241m255[39m, [0;32m 3[0m shear_range[38;5;241m=[39m[38;5;241m0.2[39m, [0;32m 4[0m zoom_range[38;5;241m=[39m[38;5;241m0.2[39m, [0;32m 5[0m horizontal_flip[38;5;241m=[39m[38;5;28;01mTrue[39;00m) [0;32m 7[0m test_datagen [38;5;241m=[39m ImageDataGenerator(rescale[38;5;241m=[39m[38;5;241m1.[39m [38;5;241m/[39m [38;5;241m255[39m) [1;32m----> 9[0m train_generator [38;5;241m=[39m [43mtrain_datagen[49m[38;5;241;43m.[39;49m[43mflow_from_directory[49m[43m([49m [0;32m 10[0m [43m [49m[43mtrain_data_dir[49m[43m,[49m [0;32m 11[0m [43m [49m[43mtarget_size[49m[38;5;241;43m=[39;49m[43m([49m[43mimg_width[49m[43m,[49m[43m [49m[43mimg_height[49m[43m)[49m[43m,[49m [0;32m 12[0m [43m [49m[43mbatch_size[49m[38;5;241;43m=[39;49m[43mbatch_size[49m[43m,[49m [0;32m 13[0m [43m [49m[43mclass_mode[49m[38;5;241;43m=[39;49m[38;5;124;43m'[39;49m[38;5;124;43mbinary[39;49m[38;5;124;43m'[39;49m[43m)[49m [0;32m 15[0m validation_generator [38;5;241m=[39m test_datagen[38;5;241m.[39mflow_from_directory( [0;32m 16[0m validation_data_dir, [0;32m 17[0m target_size[38;5;241m=[39m(img_width, img_height), [0;32m 18[0m batch_size[38;5;241m=[39mbatch_size, [0;32m 19[0m class_mode[38;5;241m=[39m[38;5;124m'[39m[38;5;124mbinary[39m[38;5;124m'[39m) [0;32m 21[0m model[38;5;241m.[39mfit_generator( [0;32m 22[0m train_generator, [0;32m 23[0m steps_per_epoch[38;5;241m=[39mnb_train_samples [38;5;241m/[39m[38;5;241m/[39m batch_size, [0;32m 24[0m epochs[38;5;241m=[39mepochs, [0;32m 25[0m validation_data[38;5;241m=[39mvalidation_generator, [0;32m 26[0m validation_steps[38;5;241m=[39mnb_validation_samples [38;5;241m/[39m[38;5;241m/[39m batch_size) File [1;32m~\.conda\envs\py\lib\site-packages\keras\preprocessing\image.py:1469[0m, in [0;36mImageDataGenerator.flow_from_directory[1;34m(self, directory, target_size, color_mode, classes, class_mode, batch_size, shuffle, seed, save_to_dir, save_prefix, save_format, follow_links, subset, interpolation, keep_aspect_ratio)[0m [0;32m 1386[0m [38;5;28;01mdef[39;00m [38;5;21mflow_from_directory[39m([38;5;28mself[39m, [0;32m 1387[0m directory, [0;32m 1388[0m target_size[38;5;241m=[39m([38;5;241m256[39m, [38;5;241m256[39m), [1;32m (...)[0m [0;32m 1400[0m interpolation[38;5;241m=[39m[38;5;124m'[39m[38;5;124mnearest[39m[38;5;124m'[39m, [0;32m 1401[0m keep_aspect_ratio[38;5;241m=[39m[38;5;28;01mFalse[39;00m): [0;32m 1402[0m [38;5;124;03m"""Takes the path to a directory & generates batches of augmented data.[39;00m [0;32m 1403[0m [0;32m 1404[0m [38;5;124;03m Args:[39;00m [1;32m (...)[0m [0;32m 1467[0m [38;5;124;03m and `y` is a numpy array of corresponding labels.[39;00m [0;32m 1468[0m [38;5;124;03m """[39;00m [1;32m-> 1469[0m [38;5;28;01mreturn[39;00m [43mDirectoryIterator[49m[43m([49m [0;32m 1470[0m [43m [49m[43mdirectory[49m[43m,[49m [0;32m 1471[0m [43m [49m[38;5;28;43mself[39;49m[43m,[49m [0;32m 1472[0m [43m [49m[43mtarget_size[49m[38;5;241;43m=[39;49m[43mtarget_size[49m[43m,[49m [0;32m 1473[0m [43m [49m[43mcolor_mode[49m[38;5;241;43m=[39;49m[43mcolor_mode[49m[43m,[49m [0;32m 1474[0m [43m [49m[43mkeep_aspect_ratio[49m[38;5;241;43m=[39;49m[43mkeep_aspect_ratio[49m[43m,[49m [0;32m 1475[0m [43m [49m[43mclasses[49m[38;5;241;43m=[39;49m[43mclasses[49m[43m,[49m [0;32m 1476[0m [43m [49m[43mclass_mode[49m[38;5;241;43m=[39;49m[43mclass_mode[49m[43m,[49m [0;32m 1477[0m [43m [49m[43mdata_format[49m[38;5;241;43m=[39;49m[38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mdata_format[49m[43m,[49m [0;32m 1478[0m [43m [49m[43mbatch_size[49m[38;5;241;43m=[39;49m[43mbatch_size[49m[43m,[49m [0;32m 1479[0m [43m [49m[43mshuffle[49m[38;5;241;43m=[39;49m[43mshuffle[49m[43m,[49m [0;32m 1480[0m [43m [49m[43mseed[49m[38;5;241;43m=[39;49m[43mseed[49m[43m,[49m [0;32m 1481[0m [43m [49m[43msave_to_dir[49m[38;5;241;43m=[39;49m[43msave_to_dir[49m[43m,[49m [0;32m 1482[0m [43m [49m[43msave_prefix[49m[38;5;241;43m=[39;49m[43msave_prefix[49m[43m,[49m [0;32m 1483[0m [43m [49m[43msave_format[49m[38;5;241;43m=[39;49m[43msave_format[49m[43m,[49m [0;32m 1484[0m [43m [49m[43mfollow_links[49m[38;5;241;43m=[39;49m[43mfollow_links[49m[43m,[49m [0;32m 1485[0m [43m [49m[43msubset[49m[38;5;241;43m=[39;49m[43msubset[49m[43m,[49m [0;32m 1486[0m [43m [49m[43minterpolation[49m[38;5;241;43m=[39;49m[43minterpolation[49m[43m,[49m [0;32m 1487[0m [43m [49m[43mdtype[49m[38;5;241;43m=[39;49m[38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mdtype[49m[43m)[49m File [1;32m~\.conda\envs\py\lib\site-packages\keras\preprocessing\image.py:507[0m, in [0;36mDirectoryIterator.__init__[1;34m(self, directory, image_data_generator, target_size, color_mode, classes, class_mode, batch_size, shuffle, seed, data_format, save_to_dir, save_prefix, save_format, follow_links, subset, interpolation, keep_aspect_ratio, dtype)[0m [0;32m 505[0m [38;5;28;01mif[39;00m [38;5;129;01mnot[39;00m classes: [0;32m 506[0m classes [38;5;241m=[39m [] [1;32m--> 507[0m [38;5;28;01mfor[39;00m subdir [38;5;129;01min[39;00m [38;5;28msorted[39m([43mos[49m[38;5;241;43m.[39;49m[43mlistdir[49m[43m([49m[43mdirectory[49m[43m)[49m): [0;32m 508[0m [38;5;28;01mif[39;00m os[38;5;241m.[39mpath[38;5;241m.[39misdir(os[38;5;241m.[39mpath[38;5;241m.[39mjoin(directory, subdir)): [0;32m 509[0m classes[38;5;241m.[39mappend(subdir) [1;31mFileNotFoundError[0m: [WinError 3] The system cannot find the path specified: 'v_data/train'