
- •Санкт-Петербург 2024
- •Часть 1. В начале импортируются необходимые для работы библиотеки, большая часть из которых наборы данных и различные виды слоёв Keras для описания структуры нейросети.
- •Часть 2. Определение предложенных классов из набора cifar-10. Сверточная нс.
- •Приложение а. Подготовка к работе. Эксперимент 1.
- •Приложение г. Эксперимент 4.
- •Приложение д. Эксперимент 5.
- •Приложение е. Эксперимент 6 и сравнение результатов.
- •Приложение ё. Часть 2 – распознавание изображений из набора cifar-10
Приложение г. Эксперимент 4.
# Эксперимент 4
model_4 = Sequential()
model_4.add(Dense(128,input_dim=num_pixels, activation='relu'))
model_4.add(Dense(64,input_dim=num_pixels, activation='relu'))
model_4.add(Dense(32,input_dim=num_pixels, activation='relu'))
model_4.add(Dense(10, activation='softmax'))
model_4.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
history_4, scores_4 = make_history(model_4, 40)
y_pred_4 = prediction(model_4)
add_model_results(4,"DNN","D-128, D-64, D-32",4,"ReLU", scores_4[1], scores_4[0])
network_report(y_pred_4)
plot_loss(history_4)
Приложение д. Эксперимент 5.
model_5 = Sequential()
model_5.add(Conv2D(32, kernel_size=(3, 3),
activation='relu',
input_shape=(28, 28, 1)))
model_5.add(MaxPooling2D(pool_size=(2, 2)))
model_5.add(Dropout(0.25))
model_5.add(Flatten())
model_5.add(Dense(128, activation='relu'))
model_5.add(Dense(10, activation='softmax'))
model_5.summary()
model_5.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
# Загрузка данных
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# Обработка
X_train = X_train / 255
X_test = X_test / 255
X_train = X_train.reshape(X_train.shape[0], 28, 28, 1)
X_test = X_test.reshape(X_test.shape[0], 28, 28, 1)
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
num_classes = y_test.shape[1]
history_5, scores_5 = make_history(model_5, 40)
y_pred_5 = prediction(model_5)
add_model_results(5,"CNN","Conv-32, MaxPooling, Dropout, Flatten, D-128",6,"ReLU", scores_5[1], scores_5[0])
network_report(y_pred_5)
plot_loss(history_5)
Приложение е. Эксперимент 6 и сравнение результатов.
model_6 = Sequential()
# Входной сверточнй слой
model_6.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
model_6.add(MaxPooling2D(pool_size=(2, 2)))
# Второй сверточный слой
model_6.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model_6.add(MaxPooling2D(pool_size=(2, 2)))
# Третий сверточный слой
model_6.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))
model_6.add(MaxPooling2D(pool_size=(2, 2)))
model_6.add(Flatten())
model_6.add(Dense(128, activation='relu'))
# Слой исключения
model_6.add(Dropout(0.25))
# Выходной слой
model_6.add(Dense(10, activation='softmax'))
# Характеристики модели
model_6.summary()
model_6.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
history_6, scores_6 = make_history(model_6, 40)
y_pred_6 = prediction(model_6)
add_model_results(6,"CNN","Conv-32,MaxPooling, Conv-64, MaxPooling, Conv-128, MaxPooling, Flatten, D-128, Dropout",10,"ReLU", scores_6[1], scores_6[0])
network_report(y_pred_6)
plot_loss(history_6)
results_df.sort_values(by=['Точность'], ascending=False)
from PIL import Image
from keras.models import load_model
# Обработка изображений
def preprocess_image(image_path):
img = Image.open(image_path).convert('L')
plt.imshow(img, cmap=plt.get_cmap('gray'))
plt.show()
# Преобразование в 28 на 28 пикселей
img = img.resize((28, 28))
img_array = np.array(img) / 255.0
img_array = img_array.reshape(1, 28, 28, 1)
return img_array
# Загрузка файлов
img1 = preprocess_image('/content/drive/MyDrive/my_digits/seven.png')
img2 = preprocess_image('/content/drive/MyDrive/my_digits/eight.png')
# Выполнение предсказаний
prediction_seven = model_5.predict(img1)
prediction_eight = model_5.predict(img2)
# Вывод предсказаний в удобном формате
predicted_digit_seven = np.argmax(prediction_seven)
predicted_digit_eight = np.argmax(prediction_eight)
print("Предсказание для семерки:", predicted_digit_seven)
print("Предсказание для восьмерки:", predicted_digit_eight)