Python | Классифицируйте рукописные цифры с помощью Tensorflow

Опубликовано: 4 Января, 2022

Классификация рукописных цифр - основная проблема машинного обучения, и ее можно решить разными способами, здесь мы реализуем их с помощью TensorFlow.

Использование алгоритма линейного классификатора с tf.contrib.learn

Линейный классификатор выполняет классификацию рукописных цифр, делая выбор на основе значения линейной комбинации функций, также известных как значения функций, и обычно представляется машине в векторе, называемом вектором признаков.

Необходимые модули:

NumPy:

 $ pip install numpy

Матплотлиб:

 $ pip install matplotlib

Tensorflow:

 $ pip установить тензор потока

Шаги, которым нужно следовать

Шаг 1. Импорт всей зависимости

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
learn = tf.contrib.learn
tf.logging.set_verbosity(tf.logging.ERROR)

Шаг 2. Импорт набора данных с использованием данных MNIST

mnist = learn.datasets.load_dataset( 'mnist' )
data = mnist.train.images
labels = np.asarray(mnist.train.labels, dtype = np.int32)
test_data = mnist.test.images
test_labels = np.asarray(mnist.test.labels, dtype = np.int32)

после этого шага будет загружен набор данных mnist.
выход :

Извлечение данных MNIST / train-images-idx3-ubyte.gz
Извлечение MNIST-данных / train-labels-idx1-ubyte.gz
Извлечение MNIST-данных / t10k-images-idx3-ubyte.gz
Извлечение MNIST-данных / t10k-labels-idx1-ubyte.gz

Шаг 3. Создание набора данных

max_examples = 10000
data = data[:max_examples]
labels = labels[:max_examples]

Шаг 4: Отображение набора данных с помощью MatplotLib



def display(i):
img = test_data[i]
plt.title( 'label : {}' . format (test_labels[i]))
plt.imshow(img.reshape(( 28 , 28 )))
# image in TensorFlow is 28 by 28 px
display( 0 )

Для отображения данных мы можем использовать эту функцию - display (0)
выход :

Шаг 5. Подгонка данных с использованием линейного классификатора

feature_columns = learn.infer_real_valued_columns_from_input(data)
classifier = learn.LinearClassifier(n_classes = 10 ,
feature_columns = feature_columns)
classifier.fit(data, labels, batch_size = 100 , steps = 1000 )

Шаг 6. Оцените точность

classifier.evaluate(test_data, test_labels)
print (classifier.evaluate(test_data, test_labels)[ "accuracy" ])

Выход :

 0,9137

Шаг 7. Прогнозирование данных

prediction = classifier.predict(np.array([test_data[ 0 ]],
dtype = float ),
as_iterable = False )
print ( "prediction : {}, label : {}" . format (prediction,
test_labels[ 0 ]) )

Выход :

 прогноз: [7], метка: 7

Полный код для классификации рукописных

# importing libraries
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
learn = tf.contrib.learn
tf.logging.set_verbosity(tf.logging.ERROR)
# importing dataset using MNIST
# this is how mnist is used mnist contain test and train dataset
mnist = learn.datasets.load_dataset( 'mnist' )
data = mnist.train.images
labels = np.asarray(mnist.train.labels, dtype = np.int32)
test_data = mnist.test.images
test_labels = np.asarray(mnist.test.labels, dtype = np.int32)
max_examples = 10000
data = data[:max_examples]
labels = labels[:max_examples]
# displaying dataset using Matplotlib
def display(i):
img = test_data[i]
plt.title( 'label : {}' . format (test_labels[i]))
plt.imshow(img.reshape(( 28 , 28 )))
# img in tf is 28 by 28 px
# fitting linear classifier
feature_columns = learn.infer_real_valued_columns_from_input(data)
classifier = learn.LinearClassifier(n_classes = 10 ,
feature_columns = feature_columns)
classifier.fit(data, labels, batch_size = 100 , steps = 1000 )
# Evaluate accuracy
classifier.evaluate(test_data, test_labels)
print (classifier.evaluate(test_data, test_labels)[ "accuracy" ])
prediction = classifier.predict(np.array([test_data[ 0 ]],
dtype = float ),
as_iterable = False )
print ( "prediction : {}, label : {}" . format (prediction,
test_labels[ 0 ]) )
if prediction = = test_labels[ 0 ]:
display( 0 )

Использование глубокого обучения с tf.keras

Глубокое обучение - это подраздел машинного обучения и искусственного интеллекта, который также известен как глубокая нейронная сеть. Это сети, способные к обучению без присмотра на основе предоставленных данных, которые не были организованы или не помечены. Сегодня мы реализуем нейронную сеть в TensorFlow для классификации рукописных цифр.

Необходимые модули:

NumPy:

 $ pip install numpy

Матплотлиб:

 $ pip install matplotlib

Tensorflow:

 $ pip установить тензор потока

Шаги, которым нужно следовать

Шаг 1. Импорт всей зависимости

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

Шаг 2. Импортируйте данные и нормализуйте их

mnist = tf.keras.datasets.mnist
(x_train,y_train) , (x_test,y_test) = mnist.load_data()
x_train = tf.keras.utils.normalize(x_train,axis = 1 )
x_test = tf.keras.utils.normalize(x_test,axis = 1 )

Шаг 3: просмотрите данные

def draw(n):
plt.imshow(n,cmap = plt.cm.binary)
plt.show()
draw(x_train[ 0 ])

Шаг 4: создайте нейронную сеть и обучите ее

#there are two types of models
#sequential is most common, why?
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape = ( 28 , 28 )))
#reshape
model.add(tf.keras.layers.Dense( 128 ,activation = tf.nn.relu))
model.add(tf.keras.layers.Dense( 128 ,activation = tf.nn.relu))
model.add(tf.keras.layers.Dense( 10 ,activation = tf.nn.softmax))
model. compile (optimizer = 'adam' ,
loss = 'sparse_categorical_crossentropy' ,
metrics = [ 'accuracy' ]
)
model.fit(x_train,y_train,epochs = 3 )

Шаг 5: проверьте точность модели и потерю

val_loss,val_acc = model.evaluate(x_test,y_test)
print ( "loss-> " ,val_loss, " acc-> " ,val_acc)

Шаг 6: прогнозирование с использованием модели

predictions = model.predict([x_test])
print ( 'lable -> ' ,y_test[ 2 ])
print ( 'prediction -> ' ,np.argmax(predictions[ 2 ]))
draw(x_test[ 2 ])

модель сохранения и тестирования

сохранение модели

#saving the model
# .h5 or .model can be used
model.save( 'epic_num_reader.h5' )

загрузка сохраненной модели

new_model = tf.keras.models.load_model( 'epic_num_reader.h5' )

прогноз с использованием новой модели

predictions = new_model.predict([x_test])
print ( 'lable -> ' ,y_test[ 2 ])
print ( 'prediction -> ' ,np.argmax(predictions[ 2 ]))
draw(x_test[ 2 ])

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.

Предыдущий
Случайный список из M неотрицательных целых чисел, сумма которых равна N
Следующий
Sixt Interview Experience для SDE-1
Рекомендуемые статьи
Страница :
Статья предоставлена:
Итсвинаяк
@itsvinayak
Голосуйте за трудности
Текущая сложность: эксперт
Улучшено:
  • Итсвинаяк
Теги статьи:
  • Искусственный интеллект
  • Tensorflow
  • Машинное обучение
  • Python
  • Технический скриптер
  • TechTips
Теги практики:
  • Машинное обучение
Сообщить о проблеме
Python Машинное обучение Technical Scripter TechTips Искусственный интеллект

РЕКОМЕНДУЕМЫЕ СТАТЬИ