Advertisement
Guest User

Untitled

a guest
Jul 20th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. from keras import applications, Input, Model
  2. from keras.applications import VGG16
  3. from keras.preprocessing.image import ImageDataGenerator
  4. from keras import optimizers
  5. from keras.models import Sequential
  6. from keras.layers import Dropout, Flatten, Dense
  7.  
  8. # path to the model weights files.
  9. weights_path = '../keras/examples/vgg16_weights.h5'
  10. top_model_weights_path = 'fc_model.h5'
  11. # dimensions of our images.
  12. img_width, img_height = 150, 150
  13.  
  14. train_data_dir = 'data/train'
  15. validation_data_dir = 'data/validation'
  16. nb_train_samples = 2000
  17. nb_validation_samples = 800
  18. epochs = 50
  19. batch_size = 16
  20.  
  21. input_tensor = Input(shape=(150, 150, 3))
  22. base_model = VGG16(weights='imagenet', include_top=False, input_tensor=input_tensor)
  23. top_model = Sequential()
  24. top_model.add(Flatten(input_shape=base_model.output_shape[1:]))
  25. top_model.add(Dense(256, activation='relu'))
  26. top_model.add(Dropout(0.5))
  27. top_model.add(Dense(1, activation='sigmoid'))
  28. top_model.load_weights('bottleneck_fc_model.h5')
  29. model = Model(input=base_model.input, output=top_model(base_model.output))
  30.  
  31. # set the first 25 layers (up to the last conv block)
  32. # to non-trainable (weights will not be updated)
  33. for layer in model.layers[:25]:
  34. layer.trainable = False
  35.  
  36. # compile the model with a SGD/momentum optimizer
  37. # and a very slow learning rate.
  38. model.compile(loss='binary_crossentropy',
  39. optimizer=optimizers.SGD(lr=1e-4, momentum=0.9),
  40. metrics=['accuracy'])
  41.  
  42. # prepare data augmentation configuration
  43. train_datagen = ImageDataGenerator(
  44. rescale=1. / 255,
  45. shear_range=0.2,
  46. zoom_range=0.2,
  47. horizontal_flip=True)
  48.  
  49. test_datagen = ImageDataGenerator(rescale=1. / 255)
  50.  
  51. train_generator = train_datagen.flow_from_directory(
  52. train_data_dir,
  53. target_size=(img_height, img_width),
  54. batch_size=batch_size,
  55. class_mode='binary')
  56.  
  57. validation_generator = test_datagen.flow_from_directory(
  58. validation_data_dir,
  59. target_size=(img_height, img_width),
  60. batch_size=batch_size,
  61. class_mode='binary')
  62.  
  63. model.fit_generator(
  64. train_generator,
  65. steps_per_epoch=2000 // batch_size,
  66. epochs=50,
  67. validation_data=validation_generator,
  68. validation_steps=800 // batch_size, verbose=2)
  69. model.save_weights('transfer_learning.h5')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement