Читаем Машинное обучение на практике – от модели PyTorch до Kubeflow в облаке для BigData полностью

Другим вариантом поэлементной операции является применение одной операции ко всем элементом по одиночке, например умножение на –1 или применение функции:

a tensor([ [ 1., 2., 3.], [ 5., 6., 7.], [ 8., 9., 10.] ]) a * –1 tensor([ [ –1., –2., –3.], [ –5., –6., –7.], [ –8., –9., –10.] ]) a.abs tensor([ [ 1., 2., 3.], [ 5., 6., 7.], [ 8., 9., 10.] ])

Также имеются операции свёртки, такие как sum, min, max, которые на входе дают сумму всех элементов, самый маленький или самый большой элемент матрицы:

a.sum tensor(51.) a.min tensor(1.) a.max tensor(10.)

Но нам будут больше интересны постолбцовые операции (операция будет производиться над каждым столбцом):

a.sum(0) tensor([14., 17., 20.]) a.min(0) torch.return_types.min( values=tensor([1., 2., 3.]), indices=tensor([0, 0, 0]) ) a.max(0) torch.return_types.max( values=tensor([ 8., 9., 10.]), indices=tensor([2, 2, 2]) )

Как мы помним, нейронная сеть состоит из слоёв, слои состоят из нейронов, а нейрон содержит на входе связи с весами в виде простых чисел. Вес задаётся обычным числом, тогда входящие связи в нейрон можно описать последовательностью чисел – вектором (одномерным массивом или списком), длина которого и есть количество связей. Так как сеть полносвязная, то все нейроны этого слоя связаны с предыдущим, а, следовательно, демонстрирующие их вектора имеют тоже одинаковую длину, создавая список равных по длине векторов – матрицу. Это удобное и компактное представление слоя, оптимизированное для использования на компьютере. На выходе нейрона имеется функция активации (сигмойда или, ReLU для глубоких и сверхглубоких сетей), которая определяет, выдаст на выходе нейрон значение или нет. Для этого необходимо применить её к каждому нейрону, то есть к каждому столбцу: мы уже видели операцию к столбцам.

Способы ускорения обучения

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

* 1642 – механические вычислительные машины, * 1940 – ламповые вычислительные машины, * 1955 – транзисторные вычислительные машины, * 1965 – компьютеры на интегральных схемах, * 1980 – компьютеры с центральными процессорами, * 1995 – многоядерные видеокарты, * 2006 – компьютеры с многоядерными процессорами, * 2017 – компьютеры с матричными процессорами.

Перейти на страницу:

Похожие книги

Искусство программирования для Unix
Искусство программирования для Unix

Книги, подобные этой, редко появляются на прилавках магазинов, поскольку за ними стоит многолетний опыт работы их авторов. Здесь описывается хороший стиль Unix- программирования, многообразие доступных языков программирования, их преимущества и недостатки, различные IPC-методики и инструменты разработки. Автор анализирует философию Unix, культуру и основные традиции сформированного вокруг нее сообщества. В книге объясняются наилучшие практические приемы проектирования и разработки программ в Unix. Вместе с тем описанные в книге модели и принципы будут во многом полезны и Windows-разработчикам. Особо рассматриваются стили пользовательских интерфейсов Unix-программ и инструменты для их разработки. Отдельная глава посвящена описанию принципов и инструментов для создания хорошей документации.Книга будет полезной для широкой категории пользователей ПК и программистов.

Эрик Стивен Реймонд

ОС и Сети / Программирование / Прочая компьютерная литература / Книги по IT