Учимся распознавать картинки из mnist

Большие локальные модели, прежде всего хорошо поддерживающие русский язык.
Ответить
БудДен
Сообщения: 3033
Зарегистрирован: 07.10.18 14:01

Учимся распознавать картинки из mnist

Сообщение БудДен » 16.04.24 00:30

Примерно такой пример был в книжке, к-рую я читал, но он морально устарел. Вот Jupiter notebook, который делает то же самое (запускал его в VSCodium). Примерная подготовка для Ubuntu 22.04

sudo snap install codium
в codium - установить расширение python самое популярное (в кром миллионы загрузок)
также решить проблему конфликта с alt: ctrl-shift-p, набиваем "settings json" и
добавляем в настройки следующее:

Код: Выделить всё

    "window.customMenuBarAltFocus": false,
    "window.enableMenuBarMnemonics": false,
    "window.menuBarVisibility": "hidden"
Закрываем codium.
Далее в терминале sudo apt install python3-pip python3-virtualenv

Код: Выделить всё

mkdir mnist
cd mnist
virtualenv mnist-venv
mnist-venv/bin/activate
codium . 
# возвращаемся в терминал, пусть кодиум пока повисит
pip install keras matplotlib numpy 
Теперь в codium создаём новый Юпитер-блокнот, он там будет предлагать что-то поставить - на всё соглашаемся. И вставляем в него такие ячейки:
[code]
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from keras.datasets import mnist
import keras

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
class_names = ['0','1','2','3','4','5','6','7','8','9']



train_images = train_images/255.0
test_images = test_images/255.0


plt.figure(figsize=(10,10))
for i in range(25):
    plt.subplot(5,5,i+1)
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(train_images[i], cmap=plt.cm.binary)
    plt.xlabel(class_names[train_labels[i]])
plt.show()


model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation='relu'),
    keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=5)
test_loss, test_acc = model.evaluate(test_images,  test_labels, verbose=2)

print('\ntest accuracy:', test_acc)
predictions = model.predict(test_images)
def plot_image(i, predictions_array, true_label, img):
    predictions_array, true_label, img = predictions_array[i], true_label[i], img[i]
    plt.grid(False)
    plt.xticks([])
    plt.yticks([])

    plt.imshow(img, cmap=plt.cm.binary)

    predicted_label = np.argmax(predictions_array)
    if predicted_label == true_label:
        color = 'blue'
    else:
        color = 'red'

    plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],
                                    100*np.max(predictions_array),
                                    class_names[true_label]),
                                    color=color)

def plot_value_array(i, predictions_array, true_label):
    predictions_array, true_label = predictions_array[i], true_label[i]
    plt.grid(False)
    plt.xticks([])
    plt.yticks([])
    thisplot = plt.bar(range(10), predictions_array, color="#777777")
    plt.ylim([0, 1])
    predicted_label = np.argmax(predictions_array)

    thisplot[predicted_label].set_color('red')
    thisplot[true_label].set_color('blue')

# Print the first X number of test images, predicted labels, and genuine labels.
# Correct predictions appear in blue, and incorrect predictions in red.
num_rows = 5
num_cols = 3
num_images = num_rows*num_cols
plt.figure(figsize=(2*2*num_cols, 2*num_rows))
for i in range(num_images):
    plt.subplot(num_rows, 2*num_cols, 2*i+1)
    plot_image(i, predictions, test_labels, test_images)
    plt.subplot(num_rows, 2*num_cols, 2*i+2)
    plot_value_array(i, predictions, test_labels)
plt.show()

БудДен
Сообщения: 3033
Зарегистрирован: 07.10.18 14:01

Re: Учимся распознавать картинки из mnist

Сообщение БудДен » 16.04.24 00:32

mnist.ipynb.7z
(1.38 КБ) 370 скачиваний

Ответить