Рубрики
Без рубрики

Numpy Градиентный | спусковой оптимизатор нейронных сетей

Градиент Numpy используется для вычисления градиента с использованием точных центральных разностей второго порядка во внутренних точках и обеих первых сторонах.

Автор оригинала: Team Python Pool.

Numpy Градиентный | спусковой оптимизатор нейронных сетей

Вы энтузиаст науки о данных и машинного обучения? Тогда вы, возможно, знаете numpy.Научный вычислительный инструмент для N-мерного массива, обеспечивающий Python скорость обработки, такую как FORTRAN и C. Это может делать различные вещи, такие как массив для изображения. массив в список и т. Д. Точно так же метод numpy.gradient() является высокоразвитым инструментом, используемым на уровне нейронных сетей.

Что такое Градиент на языке непрофессионалов?

В простой математике градиент – это наклон графика или тангенциальное значение угла, образующего линию, соединяющую две точки в 2D и плоскость в 3D. Но в научных терминах <сильный>градиент функции становится наибольшим увеличением или уменьшением функции, вычисленной по частной производной всех точек функции.

В NumPy мы в основном вычисляем <сильный>градиентный спуск, смещая функцию в сторону отрицательного градиента, чтобы уменьшить разницу в наибольшем увеличении и уменьшении функции.

Что такое Numpy градиент?

Согласно href=”https://numpy.org/doc/stable/reference/generated/numpy.gradient.html”>Numpy.org градиент numpy используется для вычисления градиента с использованием точных центральных разностей второго порядка во внутренних точках и точных односторонних разностей первого или второго порядка (прямых или обратных) на границах. Другими словами, из всех путей найдите кратчайший путь, который охватывает почти все точки. href=”https://numpy.org/doc/stable/reference/generated/numpy.gradient.html”>Numpy.org градиент numpy используется для вычисления градиента с использованием точных центральных разностей второго порядка во внутренних точках и точных односторонних разностей первого или второго порядка (прямых или обратных) на границах. Другими словами, из всех путей найдите кратчайший путь, который охватывает почти все точки.

Например, подумайте о том, чтобы спуститься с вершины холма к его подножию. Но при условии, что у вас завязаны глаза и вы можете знать только такие вещи, как ваш нынешний рост и пройденное расстояние. Он будет предпринимать различные шаги, чтобы спуститься вниз, проверяя входы, подаваемые оборудованием, и в конце концов связывая лучший способ спуска на дно. Аналогично работает градиентный спуск в NumPy

Синтаксис, который будет использоваться

Это содержит различные параметры, но не обязательно писать одинаково всегда можно напрямую написать numpy.gradient(f) где вместо 'f' можно использовать один массив или несколько массивов

Переходим к параметрам:

Параметры Обязательно или нет
f Да
варарг No
ось No
edge_order No

Массив: f

массив чисел-это входные данные, которые используются для нахождения градиента

переменные аргументы или varargs

Интервал между значениями массива. Это унитарный интервал по умолчанию для всех измерений. Интервал может быть задан с помощью:

  1. Один скаляр для указания расстояния выборки для всех измерений.
  2. N скаляров для задания постоянного расстояния выборки для каждого измерения, т. е. dx, dy, dz, …
  3. N массивов для указания координат значений вдоль каждого измерения F. Длина массива должна соответствовать размеру соответствующего измерения
  4. Любая комбинация из N скаляров/массивов со значением 2. и 3.

Если задана ось , то число вараргов должно равняться числу осей. По умолчанию: 1.

ось

Он не может иметь типа None, типа int или кортежа типа int. Он решает направление, чтобы вычислить градиент. 0 для строки и c1 для направления по столбцам. Ни один из них не используется, когда градиент вычисляется со всех сторон. Ось может быть отрицательной, в этом случае она отсчитывается от последней до первой оси.

edge_order

Это может быть 1 или 2. Он используется по отношению к аспекту границ. Градиент вычисляется с использованием точных разностей N-го порядка на границах. По умолчанию: 1

Возвращаемое значение

Он возвращает N-мерный массив или список N-мерных массивов. Другими словами, он возвращает набор ndarrays (зависит от количества измерений), который соответствует производным массива относительно каждого измерения. Каждая производная имеет ту же форму, что и массив

Примеры для понимания использования

Пример:

import numpy as np.array([2,4,5,6,7,8],)
np.gradient(f)
array([2. , 1.5, 1. , 1. , 1. , 1. ])
np.gradient(f,2)
array([1. , 0.75, 0.5 , 0.5 , 0.5 , 0.5 ])

Второй изменил интервал так что вариант результата

Точно так же мы можем использовать его для нескольких массивов

И N-мерный массив тоже. Следовательно, это возвращает то же количество массивов, что и измерения с теми же размерами

Расстояние может быть равномерным с использованием фиксированного значения

x= [1,2,3,4,5,6]
f
array([2., 4., 5., 6., 7., 8.])
np.gradient(f,x)
array([2. , 1.5, 1. , 1. , 1. , 1. ])

Или неоднородные:

Мы можем зафиксировать ось, по которой вычисляется градиент

Мы можем зафиксировать границы градиента

Короткая функция с использованием градиента numpy:

def elevation_gradient(elevation):
    """Calculate the two-dimensional gradient vector for an elevation raster.
    :param elevation: a raster giving linear scale unit heights.
    Return a raster with 2 planes giving, respectively, the dz/dx and dz/dy
    values measured in metre rise per horizontal metre travelled.
   """
    dx,.gradient(elevation.data)
    # Convert from metre rise / pixel run to metre rise / metre run.
    dx.0 / (elevation.pixel_linear_shape[1])
    dy.0 / (elevation.pixel_linear_shape[0])
    return similar_raster(np.dstack((dx, dy)), elevation)

Numpy Diff vs Градиент

Существует еще одна функция numpy, похожая на градиент, но отличающаяся в использовании, т. е.

Согласно href="http://numpy.org/doc/stable/reference/generated/numpy.diff.html">Numpy.org, используемый для вычисления дискретной разности вдоль заданной оси href="http://numpy.org/doc/stable/reference/generated/numpy.diff.html">Numpy.org, используемый для вычисления дискретной разности вдоль заданной оси

numpy.diff(a,n=1,axis=-1,prepend= value>,append= value>) value>,append= value>) value>)

В то время как diff просто дает отличие от среза матрицы.Градиент возвращает массив градиентов по заданным размерам, тогда как градиент создает набор градиентов массива по всем его размерам, сохраняя при этом его форму

Что дальше?

NumPy очень мощен и невероятно важен для информатики в Python. Это правда, если вы интересуетесь наукой о данных в Python, вам действительно следует узнать больше о Python.

Возможно, вам понравятся наши следующие учебники по numpy.

  • Среднее значение: Реализация и важность
  • Использование случайной функции для создания случайных данных
  • Reshape: Изменение Формы Массивов С Легкостью
  • Подробное объяснение np.power() С Примерами
  • Функция Зажима

Числовой градиент в нейронной сети

Нейронная сеть является основным пользователем градиента numpy. Используемый алгоритм известен как алгоритм градиентного спуска. В основном используется для минимизации отклонения функции от пути, необходимого для выполнения обучения. Математически это вектор , который дает нам направление, в котором функция потерь увеличивается быстрее. Поэтому мы должны двигаться в противоположном направлении, если попытаемся свести его к минимуму.

Возьмем, к примеру, горный спуск, место, где меняется положение, меняется высота и меняется наклон. Чтобы найти путь, который как минимум наклон и минимальное изменение направления требуется.