Guest User

Untitled

a guest
Jan 24th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. import numpy
  2. from keras.datasets import cifar10
  3. from keras.models import Sequential
  4. from keras.layers import Dense, Flatten, Activation
  5. from keras.layers import Dropout
  6. from keras.layers.convolutional import Conv2D, MaxPooling2D
  7. from keras.utils import np_utils
  8. from keras.optimizers import SGD
  9.  
  10. # Задаем seed для повторяемости результатов
  11. numpy.random.seed(42)
  12.  
  13. # Загружаем данные
  14. (X_train, y_train), (X_test, y_test) = cifar10.load_data()
  15.  
  16. X_train = X_train[0:1000]
  17. y_train = y_train[0:1000]
  18. # Размер мини-выборки
  19. batch_size = 32
  20. # Количество классов изображений
  21. nb_classes = 10
  22. # Количество эпох для обучения
  23. nb_epoch = 5
  24. # Размер изображений
  25. img_rows, img_cols = 32, 32
  26.  
  27. # Нормализуем данные
  28. X_train = X_train.astype('float32')
  29. X_test = X_test.astype('float32')
  30. X_train /= 255
  31. X_test /= 255
  32.  
  33. # Преобразуем метки в категории
  34. Y_train = np_utils.to_categorical(y_train, nb_classes)
  35. Y_test = np_utils.to_categorical(y_test, nb_classes)
  36.  
  37. # Создаем последовательную модель
  38. model = Sequential()
  39. # Первый сверточный слой
  40. model.add(Conv2D(32, (3, 3), padding='same',
  41. input_shape=(32, 32, 3), activation='relu'))
  42. # Второй сверточный слой
  43. model.add(Conv2D(32, (3, 3), activation='relu', padding='same'))
  44. # Первый слой подвыборки
  45. model.add(MaxPooling2D(pool_size=(2, 2)))
  46.  
  47. # Слой регуляризации Dropout
  48. # model.add(Dropout(0.25))
  49.  
  50. # Третий сверточный слой
  51. model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))
  52. # Четвертый сверточный слой
  53. model.add(Conv2D(64, (3, 3), activation='relu'))
  54. # Второй слой подвыборки
  55. model.add(MaxPooling2D(pool_size=(2, 2)))
  56.  
  57. # Слой регуляризации Dropout
  58. # model.add(Dropout(0.25))
  59.  
  60. # Слой преобразования данных из 2D представления в плоское
  61. model.add(Flatten())
  62. # Полносвязный слой для классификации
  63. model.add(Dense(512, activation='relu'))
  64.  
  65. # Слой регуляризации Dropout
  66. # model.add(Dropout(0.5))
  67.  
  68. # Выходной полносвязный слой
  69. model.add(Dense(nb_classes, activation='softmax'))
  70.  
  71. # Задаем параметры оптимизации
  72. sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
  73. model.compile(loss='categorical_crossentropy',
  74. optimizer=sgd,
  75. metrics=['accuracy'])
  76. # Обучаем модель
  77. model.fit(X_train, Y_train,
  78. batch_size=batch_size,
  79. epochs=nb_epoch,
  80. validation_split=0.1,
  81. shuffle=True,
  82. verbose=2)
  83.  
  84. # Оцениваем качество обучения модели на тестовых данных
  85. scores = model.evaluate(X_test, Y_test, verbose=0)
  86. print("Точность работы на тестовых данных: %.2f%%" % (scores[1]*100))
  87.  
  88. 1 - 0.0
  89. 2 - 0.0
  90. 3 - 0.0
  91. 4 - 0.0
  92. 5 - 100.0
  93. 6 - 0.0
  94. 7 - 0.0
  95. 8 - 0.0
  96. 9 - 0.0
  97. 10 - 0.0
  98. ['5 - deer']
  99.  
  100. 1 - 4.0
  101. 2 - 33.0
  102. 3 - 2.0
  103. 4 - 32.0
  104. 5 - 87.0
  105. 6 - 44.0
  106. 7 - 33.0
  107. 8 - 33.0
  108. 9 - 22.0
  109. 10- 22.0
  110. ['5 - deer']
Add Comment
Please, Sign In to add comment