Advertisement
gagarin_1982

Untitled

Jan 21st, 2025
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. import numpy as np
  2. from keras.layers import Dense, GlobalAveragePooling2D
  3. from keras.models import Sequential
  4. from keras.optimizers import SGD
  5. from tensorflow.keras.preprocessing.image import ImageDataGenerator
  6. from tensorflow.keras.applications import ResNet50
  7.  
  8. def load_train(path):
  9. datagen = ImageDataGenerator(validation_split=0.25, rescale=1/255)
  10.  
  11. train_datagen_flow = datagen.flow_from_directory(
  12. path,
  13. target_size=(150, 150),
  14. class_mode='sparse',
  15. subset='training',
  16. seed=12345)
  17.  
  18. return train_datagen_flow
  19.  
  20. def create_model(input_shape):
  21. backbone = ResNet50(input_shape=(150, 150, 3), weights='/datasets/keras_models/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5', include_top=False)
  22.  
  23. backbone.trainable = False # Замораживаем веса ResNet
  24.  
  25. model = Sequential()
  26. model.add(backbone)
  27. model.add(GlobalAveragePooling2D())
  28. model.add(Dense(12, activation='softmax'))
  29.  
  30. model.compile(optimizer=adam(learning_rate=0.01),
  31. loss='sparse_categorical_crossentropy',
  32. metrics=['acc'])
  33.  
  34. return model
  35.  
  36. def train_model(model, train_datagen_flow, test_data, batch_size=None, epochs=10, steps_per_epoch=None, validation_steps=None):
  37. model.fit(train_datagen_flow,
  38. validation_data=test_data,
  39. batch_size=batch_size, epochs=epochs,
  40. steps_per_epoch=steps_per_epoch,
  41. validation_steps=validation_steps,
  42. verbose=2, shuffle=True)
  43.  
  44. return model
  45.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement