from tensorflow import *
from keras.datasets import cifar10
from keras.layers import *
from keras import *
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
# Нормальзация днных
x_train = x_train / 255
x_test = x_test / 255
# Преобразование верных ответов в формат One Hot Encoding
y_train = utils.to_categorical(y_train, 10)
y_test = utils.to_categorical(y_test, 10)
# Создаем сверточный слой
model = Sequential()
# Первй сверточный слой
model.add(Conv2D(32, (3, 3), input_shape=(32, 32, 3), activation='relu'))
# Второй сверточный слой
model.add(Conv2D(32, (3, 3), activation='relu'))
# Первый слой подвыборки
model.add(MaxPooling2D(pool_size = (2, 2)))
# Слой регуляции Dropout
model.add(Dropout(0.25))
# Третий сверточный слой
model.add(Conv2D(64, (3, 3), activation='relu'))
# Четверый сверточный слой
model.add(Conv2D(64, (3, 3), activation='relu'))
# Второй слой подвыборки
model.add(MaxPooling2D(pool_size = (2, 2)))
# Слой регуляции Dropout
model.add(Dropout(0.25))
# Слой преобразования изображений из 2D в плоское разрешение
model.add(Flatten())
# Полносвязный слой для классификации
model.add(Dense(10, activation='softmax'))
# Компиляция нейронной сети
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])