Big Data Digest производства
Автор: Цзян Шань Бао
Маленькие друзья ~ ~ хорошо вы строить нейронную сеть Numpy, мы пришли к третьему периоду. Первая фаза переваривают бактерии научить вас , как построить простую нейронную сеть с Numpy, закончил с прогнозированием часть. Второй период для каждого принести градиентный спуск соответствующих точек знаний.
В этом вопросе, мы научим вас, как читать набор данных, а также набор данных, используемых для обучения нейронной сети, а два, как это до сих пор реализуется Numpy. Перед началом кода, бактерии переваривают, прежде чем мы узнаем сегодня наборов данных, которые мы используем.
Dataset Введение
Сбор данных с использованием известного MNIST рукописных наборов данных. По данному официальному сайту, этот набор данных имеет 70000 образцов, в том числе 60000 обучающих выборок, 10000 образцов тестов.
После того, как наборы данных, загруженные, файл делится на четыре части, а именно: обучающих набор картинку, маркировать обучающий набор, набор для тестирования фотографий, тест набор этикеток. Данные хранятся в двоичном формате.
В котором первые 16 байт обучающего набора хранится номер файла изображения, количество строк и столбцов цифр и других изображений. Обучение набор меток файла первые 8 байт памяти, таких как количество метки изображения. Два набора тестовых файлов точно так же.
Бактерии переваривают загруженный адрес хранения файла
Считывание данных
train_img_path=r'C:\Users\Dell\MNIST\train-images.idx3-ubyte'
Файлы сохраняются в локальной адресной экстракции, генерируя четыре адреса, приведенной выше код «г» экранирующего символ, потому что \ специального использования в Python, требуются адрес файла символы ясно побег.
Для того, чтобы задняя часть модели выполнена лучше, мы разделим обучающий набор, разделен на 50 000 и 10 000 обучающего набора набор проверки.
Примечание: В комплекте проверки модели во время обучающей выборки отведенной отдельно, он может быть использован для настройки параметров супер модели и модели для возможности проводить предварительную оценку.
import struct
Поскольку файлы хранятся в двоичном формате, чтение данных режим «гь». И потому, что нам нужны данные, отображаемые арабскими цифрами способом. Таким образом, здесь мы использовали пакет STRUCT Питона. Struct.unpack ( «> 4i», f.read (16))> направление представляет собой число байт памяти, я представляю собой целое число, первые четыре 4 представляют собой целое число, необходимое. f.read (16) означает, что для чтения 16 байтов, т.е. 4 целое число, как 4-байтовое целое число, равное.
изменить форму (-1,28 * 28): -1, если параметр присутствует, что указует на других параметрах, определяемого параметр преобразования одномерного массива является двумерный матрицей, а второй аргумент этого числа каждой строки-1. номер.
Примечание: FromFile np.fromfile Использование (рама, DTYPE = np.float, кол = -1, отд = ''), в котором: кадр: строка файла. Чтение типов данных: DTYPE. количество: количество элементов для чтения, -1 представляет читать весь файл. сентябрь: разделив строку данных.
Прочитайте весь файл, а затем отображать данные в порядке с фотографиями.
import matplotlib.pyplot as plt
Обратите внимание, что если вы не определяете CMap = «серый», фоновый рисунок будет очень странно.
![image](https://upload-images.jianshu.io/upload_images/10137682-d258846d6fe2a0af?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Тест, закончил определение функции, дисплей это -
Отображение данных и чтение завершено, следующие параметры запуска обучения.
данные обучения
Прежде чем мы начнем, чтобы быть в состоянии связать вверх и вниз, мы первый курс Код Tieshanglai ~
def tanh(x):
Сначала определим две функции активации производного, производного толкнул к конкретному процессу не представлена здесь, заинтересованные студенты могут искать для себя.
def d_softmax(data):
В котором производная TANH np.diag (1 / . (Np.cosh (данные)) 2), является результатом оптимизации. 1 / (np.cosh (данные)) 2
Примечание: Diag генерируют диагональную матрицу, роль внешней функции является первым параметром второй параметр, полученный путем умножения один на одну матрицу
Тогда словарное определение, а число разрешается в определенном положении 1-мерной матрицы
differential = {softmax:d_softmax,tanh:d_tanh}
Squared разница функция, какие параметры являются параметрами, которые мы инициализируем первый курс, определенный в процессе обучения, будет автоматически обновляться.
def sqr_loss(img,lab,parameters):
Градиент расчет
def grad_parameters(img,lab,init_parameters):
Формула расчета градиента использует формулу: (y_predict-у) ^ 2, композиционные функции выведения, так что -2 (y_prdict-у) умножается на производной, которая находится позади истоки -2 grad_b1.
Это стоит причины должна быть более свинец определенного числа [f (х +) -f (х)] / ч при Validate нашего градиент искать право заботиться начинающие студенты понять процесс нейронной сети, этот шаг опускаются здесь в Казахстане ,
Сюда входит тренировку, мы входные данные в пакетном моде, позиционирование каждой партии содержит 100 изображений. batch_size = 100. Получение среднего градиента получается, код, воплощенный в: grad_accu [ключ] / = batch_size.
def train_batch(current_batch,parameters):
Использование механизма копирования, чтобы избежать изменений параметров влияют на общую подготовку, copy.deepcopy может повторно копия не влияет на исходные данные.
И здесь мы использовали формулу:
![image](https://upload-images.jianshu.io/upload_images/10137682-4b009fd89bddba41?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Затем определяют скорость обучения:
def learn_self(learn_rate):
Внутри, если заявление позволяет нам видеть прогресс обучения нейронной сети.
![image](https://upload-images.jianshu.io/upload_images/10137682-8eceaa6fac56fe2f?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Здесь мы закончили учебную нейронные сети, для проверки точности, как мы можем использовать, чтобы проверить, насколько точным набор внешнего вида.
Потеря набор пользовательских проверки:
def valid_loss(parameters):
Точность расчета:
def valid_accuracy(parameters):
Наконец получить результаты:
![image](https://upload-images.jianshu.io/upload_images/10137682-7a1e260982c54fa7?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
90% точности эй - лучший результат, но, к счастью, в конце концов, не узнать, как настроить и решить за закрывающуюся ставку.
Ну, содержание этого вопроса об этом, и вы можете наслаждаться еще некоторое содержание, чтобы переварить следующий вопрос, мы говорим о том, как регулировать скорость обучения и смотреть на более сложных нейронных сетей.