Как устроена паяльная лампа


Паяльная лампа. Виды и устройство. Применение и работа

Паяльная лампа или горелка – это нагревательное устройство, работающее на жидких горючих материалах, таких как спирт, керосин или бензин, которое создает открытое пламя. Прибор был изобретен 1881 году, и за многолетнюю историю практически не изменился. Он до сих пор является актуальным и востребованным в различных отраслях промышленной деятельности и бытовой жизни. С развитием технологий появились другие виды устройств, способные в определенной степени заменить лампы – это электрический монтажный фен, газовая горелка. Устройство производится с различной емкостью бака для заправки горючего от 0,1 до 2 л. При этом мощность нагрева пламени доходит до 3 кВт.

Где применяется паяльная лампа

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

Рассматривая возможные направления использования можно отметить:
  • Расплавление припоя для пайки и нагрев паяльника.
  • Расплавка свинца и других металлов, температура плавления которых ниже 1100 градусов.
  • Обжиг поверхностей для удаления красок и лаков.
  • Отогрев заледенелых водопроводных труб из металла.
  • Дезинфекция клеток для животных.
  • Подключение к примусу для приготовления пищи.
  • Разогрев ржавых деталей с целью их расширения для облегчения демонтажа.
  • Смоление свиных туш.
  • Разогрева битума или смолы при ремонте крыш.

С появлением газовых горелок паяльная лампа утратила свою популярность, поскольку уступает им по простоте применения. Чтобы разжечь лампу и подготовить к использованию необходимо затрачивать как минимум 5 минут. При этом руки и одежда могут пропахнуть запахом бензина, керосина или спирта. В случае с газовой горелкой подобного не происходит, поскольку она сразу же зажигается и горит на полную мощность.

Плюсы и минусы
К преимуществам, которыми обладают паяльные лампы можно отнести:
  • Доступность горючего для их заправки.
  • Высокая мощность говорения.
  • Универсальность применения.
  • Низкая себестоимость заправки на фоне экономичного расхода.

Действительно, если паяльная лампа работает на бензине, то для заправки нужно просто купить горючее в любой АЗС. Учитывая, что средняя горелка расходует около 1 л топлива за 2 часа работы на полную мощность, применение подобного устройства более чем оправданно. Если сравнивать лампу с аналогичным устройством, которое горит на газу, то можно с уверенностью отметить, что на бензиновом топливе работать гораздо выгодней, поскольку оно стоит дешевле, чем баллон с газом. Бензин достать намного легче, что нельзя сказать о газовых баллонах, которые продаются только в хозяйственных магазинах. Исключением являются только газовые горелки, которые с помощью шланга подключается к бытовому баллону, используемому для оснащения кухонных плит.

При этом нельзя не отметить недостатки, которыми обладают лампы:
  • Сложность розжига.
  • Наличие открытого пламени, что может привести к возгоранию и пожару.
  • Высокая вероятность взрыва при нарушении правил безопасности.
  • Невозможность дозаправки до момента полного остывания корпуса устройства.
  • Возможность розжига только на открытом воздухе за пределами помещения.
  • Устойчивый запах горючего на этапе разогрева.
  • Большое количество копоти в момент розжига.
  • Покрытие корпуса горелки сажей, которая пачкает руки.
  • Отсутствие автоматической системы розжига, как у газовых аналогов.
Устройство лампы

Паяльная лампа при своей внешней простоте имеет очень интересную конструкцию, поскольку каждая деталь продумана до мелочей.

Зачастую устройство лампы бывает упрощено, и заправочная горловина отсутствует. Ее роль совмещена вместе с насосом для нагнетания давления. Насос выкручивается из бака, в результате чего получается заправочное отверстие. После заливки бензина, керосина или спирта, насос закручивается обратно.

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

Как запустить паяльную лампу

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

Подготовительный этап

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

Далее предстоит самая тяжелая работа. Необходимо создать избыточное давление внутри бака лампы. Для этого применяется насос. Сначала шток насоса двигается очень легко, но по мере нагнетания давления работать становится все тяжелее. Для лампы объемом в 1 л заполненной наполовину понадобится приблизительно 60 качков. Ориентироваться только по этому показателю не стоит, поскольку многое зависит от производителя и технического состояния насоса. Если в нем износилась манжета, то качать придется дольше. Ориентиром того, что достаточное давление уже создано, является существенное утяжеление движения штока. При этом если убрать руку со штока, он сам выдвигается с корпуса насоса. Достигнув такого результата нужно прекратить закачку.

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

Когда создано избыточное давление достаточной силы, нужно проверить работоспособность форсунки. Для этого слегка приоткрывается регулировочный винт. Как только из форсунки вылетит струя горючего, винт закрывается.

Непосредственный розжиг

После завершения подготовительного этапа можно приступить к непосредственному розжигу. Он осуществляется только на открытом воздухе или в техническом помещении, в котором запах бензина не создаст дальнейшего дискомфорта. Вполне возможно использовать лампу в гараже или мастерской, при этом включив вентиляцию или открыв входную дверь. Чтобы запустить горелку нужно набрать несколько миллилитров применяемого горючего и залить его в чашечку, находящуюся под смесителем лампы. Горючее заливается в ванночку наполовину. В том случае если розжиг осуществляется в сильный мороз, чашечка заполняется полностью. Далее с помощью спички или зажигалки нужно поджечь поверхность горючего. Работать нужно аккуратно, поскольку в момент воспламенения горящий факел может обжечь пальцы. Когда топливо в чашечке начнет гореть, нужно повернуть горелку по ветру, чтобы факел не достигал пластиковых деталей – рукояти насоса и регулировочного винта.

Как только топливо в чаше практически выгорит нужно слегка приоткрыть регулировочный винт. В результате из форсунки начнет подаваться горючее доведенное в пустотелой горелке до газообразного состояния. В таком виде лампа оставляется еще на несколько минут. За это время топливо в чаше прогорает окончательно. При этом подаваемое из форсунки пламя, смешанное с воздухом создает более высокую температуру горения, что еще больше разогревает горелку. Чем она горячее, тем интенсивнее жидкое горючее превращается в пар, который горит намного лучше.

Буквально за 2-3 минуты с момента того как форсунка была открыта и началась подача горючего непосредственно из самой лампы, пламя приобретает синеватый оттенок и вылетает под давлением. С этого момента лампу можно использовать. Такой факел уже не оставляет следов копоти на обжигаемой поверхности. По мере того, как давление внутри бачка будет спадать, сила пламени уменьшится. Чтобы его поддерживать, нужно периодически закачивать давление с помощью насоса. Это можно делать при горящей лампе. Сила факела регулируется винтом.

Правила безопасности

Чтобы избежать взрыва горелки необходимо придерживаться нескольких простейших правил безопасности. В первую очередь следует использовать только тот вид горючего, для которого паяльная лампа была создана. Если она работает на керосине, то заправка бензином категорически запрещена. Следующее очень важное правило – нельзя открывать заливную горловину в момент работы горелки, или когда она еще горячая. Именно из-за нарушения этого запрета и случается подавляющее большинство несчастных случаев. Даже если топливо закончилось, открыть бачок можно только после того, как лампа остыла.

Похожие темы:

Паяльные лампы | HowStuffWorks

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

Фотографии электроинструмента

Объявление

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

Изобретение паяльной лампы в конце 19 века повсюду взволновало пироманов и произвело революцию в процессе сварки . Самое раннее известное свидетельство сварки или соединения металлических деталей путем нагревания датируется более 3000 лет назад.К средневековью этот процесс получил значительное развитие, и кузнечное дело стало обычным делом. Паяльная лампа упростила резку и сварку металла более точно, сосредоточив высокую температуру на небольшой точке.

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

.

Компоненты паяльной лампы | HowStuffWorks

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

Регуляторы на головках цилиндров регулируют давление и расход газа. Регулировка их на соответствующее давление имеет важное значение для предотвращения взрывов.Регулятор имеет два манометра: манометр высокого давления считывает давление газа в баллоне, а манометр низкого давления показывает давление газа для подачи в шланг и горелку. Узнайте больше о давлении и о том, как его измерить, в статье «Как работают манометры».

Объявление

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

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

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

  • Обратные клапаны , прикрепленные к регуляторам и головке горелки, помогут предотвратить обратный поток газа через шланг или баллон.Давление в шланге всегда должно быть больше давления в головке резака. Если это изменится и давление в головке горелки превосходит давление в шланге, то обратный клапан закрывается, перекрывая подачу газа.
  • Пламегаситель крепится к регулятору и обычно состоит из обратного клапана и пламегасителя , который пропускает газ, но не пламя. Эти предохранители предотвращают ретроспективные кадры, которые мы обсудим в разделе «Освещение».

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

.

Безопасность паяльной лампы | HowStuffWorks

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

Вы будете благодарны за этот уровень защиты, если во время использования паяльной лампы что-то пойдет не так, например, обратный огонь или ретроспективный свет. Backfire возникает, когда пламя гаснет с громким хлопком. Недостаточное давление газа или прикосновение наконечника резака к предмету вызывает эти обратные вспышки, которые, хотя и являются поразительными, не повредят вам. Flashback происходит, когда пламя уходит в горелку из-за неправильного давления или засора. Если вы думаете, что происходит обратная вспышка, немедленно отключите оба газовых баллона, так как это чрезвычайно опасно.

Объявление

Ливень искр, летящий от рабочего места с паяльной лампой, тоже может быть проблемой. Несмотря на свою красоту, обильное количество искр может указывать на проблемы. Когда искры разлетаются чрезмерно и далеко, это может означать, что давление газа слишком велико или существует опасность возникновения пожара [источник: Финч].

.

Начало работы с PyTorch Часть 1: Понимание того, как работает автоматическая дифференциация | автор: Ayoosh Kathuria

Итак, пришло время начать работу с PyTorch. Это первое из серии руководств по PyTorch.

Это часть 1, где я опишу основные строительные блоки, а также Autograd .

ПРИМЕЧАНИЕ: Важно отметить, что руководство создано для PyTorch 0.3 и более ранних версий. Последняя предлагаемая версия - 0.4.Я решил придерживаться 0.3, потому что на данный момент 0.3 - это версия, которая поставляется в Conda и pip-каналах. Кроме того, большая часть кода PyTorch, используемого в открытых источниках, не была обновлена ​​для включения некоторых изменений, предложенных в версии 0.4. Я, однако, укажу на некоторые места, где вещи отличаются в 0,3 и 0,4.

Если вы когда-либо занимались машинным обучением на python, вы наверняка встречали NumPy. Причина, по которой мы используем Numpy, заключается в том, что он намного быстрее, чем списки Python при выполнении матричных операций.Почему? Потому что он делает большую часть тяжелой работы в C.

Но в случае обучения глубоких нейронных сетей массивы NumPy просто не справляются с этим. Я слишком ленив, чтобы делать здесь фактические вычисления (Google для «FLOPS в одной итерации ResNet, чтобы получить представление»), но коду, использующему только массивы NumPy, потребовались бы месяцы для обучения некоторых современных сетей.

Вот где вступают в игру Тензоры . PyTorch предоставляет нам структуру данных под названием Tensor , которая очень похожа на ndarray NumPy. Но в отличие от последнего, тензоры могут задействовать ресурсы графического процессора для значительного ускорения матричных операций.

Вот как сделать тензор.

 In [1]: import torch In [2]: import numpy as npIn [3]: arr = np.random.randn ((3,5)) In [4]: ​​arr 
Out [4]: ​​array ( [[-1,00034281, -0,07042071, 0,81870386],
[-0,86401346, -1,42, -1,12398822],
[-1,14619856, 0,39963316, -1,11038695],
[0,00215314, 0,687, -0,559) [5] 659]: десятки = факел.from_numpy (arr) In [6]: десятки
Out [6]:

-1,0003 -0,0704 0,8187
-0,8640 -1,4290 -1,1240
-1,1462 0,3996 -1,1104
0,0022 0,6879 -0,5597
[torch.DoubleTensor размером 4x3]

In [7]: another_tensor = torch.LongTensor ([[2,4], [5,6]]) In [7]: another_tensor
Out [13]: 2 4
5 6
[torch.LongTensor размером 2x2 ] In [8]: random_tensor = torch.randn ((4,3)) In [9]: random_tensor
Out [9]: 1,0070 -0,6404 1,2707
-0,7767 0,1075 0,4539
-0,1782 -0,0091 -1.0463
0,4164 -1,1172 -0,2888
[torch.FloatTensor размером 4x3]

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

Поскольку нейронные сети используют миллиарды весов, эффективное выполнение вышеуказанного шага может сделать или нарушить возможность обучения.

Building Block # 2.1: Графики вычислений

Графы вычислений лежат в основе работы современных сетей глубокого обучения, и PyTorch не является исключением.Давайте сначала разберемся, что это такое.

Допустим, ваша модель описана так:

  b = w1 * a 
c = w2 * a
d = (w3 * b) + (w4 * c)
L = f (d)

Если Я должен был нарисовать график вычислений, он, вероятно, выглядел бы так. Вычислительный график

для нашей модели

NOW , вы должны отметить, что приведенный выше рисунок не совсем точное представление того, как график представлен под капотом PyTorch.Однако пока этого достаточно, чтобы довести до конца нашу точку зрения.

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

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

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

Применение правила цепочки с использованием графов вычислений

Вот несколько вещей, на которые следует обратить внимание. Во-первых, стрелки на графике теперь меняют направление. Это потому, что мы движемся в обратном направлении, а стрелки отмечают обратный поток градиентов.

Во-вторых, для этого примера вы можете представить градиенты, которые я написал как , вес ребер . Обратите внимание: эти градиенты не требуют вычисления цепного правила.

Теперь, чтобы вычислить градиент любого узла, скажем, L, относительно любого другого узла, скажем c (dL / dc) , все, что нам нужно сделать, это.

  1. Проследите путь от L до c . Это будет L → d → c.
  2. Умножьте все веса ребер на при перемещении по этому пути. В результате вы получите следующее количество: ( dd / dd) * ( dd / dc) = (dL / dc)
  3. Если есть несколько путей, добавьте их результаты. Например, в случае дл / да, у нас есть два пути. L → d → c → a и L → d → b → a. Мы складываем их вклад, чтобы получить градиент L w.r.t. а.

[ ( дл / дд) * ( дд / дд) * ( дд / дд)] + [ ( дл / дд) * ( дд / дб) * ( дБ / да)]

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

PyTorch выполняет то, что мы описали выше, с помощью пакета Autograd .

Итак, есть три основных момента, которые необходимо понять о том, как работает Autograd .

Building Block # 3.1: Переменная

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

 из torch.autograd import Variablevar_ex = Variable (torch.randn ((4,3)) #creating a Variable 

A Variable Класс обертывает тензор. Вы можете получить доступ к этому тензору, вызвав атрибут .data

Переменная также хранит градиент скалярной величины (скажем, потерь) по отношению к параметру, который она содержит. К этому градиенту можно получить доступ, вызвав атрибут .grad . Это в основном градиент, вычисленный до этого конкретного узла, и градиент каждого последующего узла, могут быть вычислены путем умножения веса края на градиент, вычисленный в узле непосредственно перед ним.

Третий атрибут, который хранится в переменной , - это grad_fn , объект Function , создавший переменную.

ПРИМЕЧАНИЕ: PyTorch 0.4 объединяет классы Variable и Tensor в один, а Tensor можно превратить в «Variable» с помощью переключателя, а не создания экземпляра нового объекта. Но поскольку в этом руководстве мы используем версию 0.3, мы продолжим.

Строительный блок № 3.2: Функция

Я сказал выше Функция ? По сути, это абстракция для функции.Что-то, что принимает ввод и возвращает вывод. Например, если у нас есть две переменные, a и b , то если

c = a + b

Тогда c - новая переменная, и это grad_fn - это то, что называется AddBackward. (встроенная функция PyTorch для добавления двух переменных) , функция, которая приняла a и b в качестве входных данных и создала c .

Тогда вы можете спросить, зачем нужен целый новый класс, если в Python есть способ определения функции?

При обучении нейронных сетей есть два шага: прямой проход и обратный проход.Обычно, если вы реализуете его с помощью функций Python, вам придется определить две функции. Один для вычисления выходных данных во время прямого прохода, а другой для вычисления градиента, который необходимо распространить.

PyTorch абстрагирует необходимость написания двух отдельных функций (для прямого и обратного прохода) в два члена функций одного класса, называемого torch.autograd.Function.

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

Building Block # 3.3: Autograd

Давайте теперь углубимся в то, как PyTorch создает граф вычислений. Сначала мы определяем наши переменные.

Результатом вышеперечисленных строк кода является

Теперь давайте разберемся, что, черт возьми, только что здесь произошло. Если вы посмотрите на исходный код, то вот как обстоят дела.

  • Определите листовых переменных графика (строки 5–9). Мы начинаем с определения группы «переменных» (Нормальный, использование языка Python, а не переменные в pytorch ).Если вы заметили, значения, которые мы определили, являются конечными узлами в нашем вычислительном графе. Имеет смысл только то, что мы должны их определить, поскольку эти узлы не являются результатом каких-либо вычислений. На данный момент эти ребята занимают память в нашем пространстве имен Python. Значит, они на сто процентов настоящие. Мы должны установить для атрибута requires_grad значение True, иначе эти переменные не будут включены в граф вычислений, и для них не будут вычисляться градиенты (и другие переменные, которые зависят от этих конкретных переменных для градиентного потока).
  • Создайте график (строки 12–15) . До сих пор в нашей памяти нет ничего, кроме графа вычислений. Только листовые узлы, но как только вы напишете строки 12–15, будет создан граф НА ЛЕТУ. ДЕЙСТВИТЕЛЬНО ВАЖНО УБИРАТЬ ЭТУ ДЕТАЛЬ. НА ЛЕТУ. Когда вы пишете b = w1 * a , это происходит тогда, когда начинается построение графика и продолжается до строки 15. Это как раз прямой проход нашей модели, когда выходные данные вычисляются из входных данных. Функция вперед каждой переменной может кэшировать некоторые входные значения, которые будут использоваться при вычислении градиента при обратном проходе.(Например, если наша функция forward вычисляет W * x , тогда d (W * x) / d (W) равно x , ввод, который необходимо кэшировать)
  • Итак, причина, о которой я сказал у вас график, который я нарисовал ранее, не совсем точен? Потому что, когда PyTorch создает график, узлами графа являются не объекты Variable . Это объект Function , а именно grad_fn каждой переменной , которая формирует узлы графа. Итак, график PyTorch должен выглядеть так.
Каждая функция - это узел в графе вычислений PyTorch.
  • Я представил листовые узлы по их именам, но у них тоже есть свои grad_fn ’ (которые возвращают значение None. Это имеет смысл, поскольку вы не можете распространяться назад за пределы листовых узлов). Остальные узлы теперь заменены их grad_fn ’ s. Мы видим, что одиночный узел d заменяется тремя функциями, двумя умножениями и сложением, в то время как потеря, заменяется функцией минус .
  • Вычислите градиенты (строка 18). Теперь мы вычисляем градиенты, вызывая функцию .backward () на L . Что именно здесь происходит? Во-первых, градиент на L равен 1 ( дл / ). Затем мы вызываем функцию backward , которая в основном выполняет работу по вычислению градиентов выходных данных объекта Function относительно входов объекта Function . Здесь L - результат 10 - d, что означает, что функция обратного направления вычислит градиент ( dL / dd) как -1.
  • Теперь этот вычисленный градиент умножается на накопленный градиент (сохраняется в атрибуте grad переменной , соответствующей текущему узлу, что в нашем случае составляет дл / дл = 1 ), а затем отправляется в узел ввода, который будет сохранен в атрибуте grad переменной, соответствующей узлу ввода. Технически мы применили цепное правило ( дл / ) * ( дл / ) = дл / дд.
  • Теперь давайте разберемся, как распространяется градиент для переменной d.d рассчитывается на основе входных данных (w3, w4, b, c). В нашем графе он состоит из 3 узлов, 2 умножений и 1 сложения.
  • Сначала функция AddBackward (, представляющая операцию сложения узла d на нашем графике) вычисляет градиент своего вывода ( w3 * b + w4 * c ) относительно его входов ( w3 * b и w4 * c ), что составляет (1 для обоих). Теперь эти локальных градиентов умножаются на накопленный градиент ( dL / dd x 1 = -1 для обоих), и результаты сохраняются в атрибуте grad соответствующих входных узлов.
  • Затем функция MulBackward (, представляющая операцию умножения w4 * c ) вычисляет градиент своего входного выхода по отношению к входам ( w4 и c) a s (c и w4) соответственно . Локальные градиенты умножаются на накопленный градиент ( дл / день (w4 * c) = -1). Результирующее значение (-1 x c и -1 x w4 ) затем сохраняется в атрибуте grad переменных w4 и c соответственно.
  • Градиенты для всех узлов вычисляются аналогичным образом.
  • Наклон L относительно любого узла можно получить, позвонив. grad для переменной, соответствующей этому узлу, , учитывая, что это конечный узел (поведение PyTorch по умолчанию не позволяет вам получить доступ к градиентам нелистовых узлов. Подробнее об этом позже). Теперь, когда у нас есть градиенты, мы можем обновить наши веса с помощью SGD или любого другого алгоритма оптимизации, который вам нравится.
 w1 = w1 - (скорость_учения) * w1.grad # обновить изображения с помощью GD 

и т. д.

Итак, разве я не говорил вам, что вы не можете получить доступ к атрибуту grad нелистовых переменных . Да, это поведение по умолчанию. Вы можете отменить это, позвонив. keep_grad () для переменной сразу после ее определения, и тогда вы сможете получить доступ к ее атрибуту grad . Но на самом деле, что, черт возьми, творится под завесой.

Графики динамических вычислений

PyTorch создает нечто, называемое графом динамических вычислений , , что означает, что график генерируется на лету. До тех пор, пока не будет вызвана функция forward переменной, на графике не будет узла для переменной (это grad_fn) . График создается в результате вызова функции вперед множества переменных . Только после этого буферы выделяются для графика и промежуточных значений (которые позже используются для вычисления градиентов). Когда вы вызываете backward () , по мере вычисления градиентов эти буферы по существу освобождаются, а график уничтожается.Вы можете попробовать вызвать backward () несколько раз на графике, и вы увидите, что PyTorch выдаст ошибку. Это связано с тем, что граф уничтожается при первом вызове backward () и, следовательно, графа для обратного вызова во второй раз не существует.

Если вы снова вызовете переадресацию , будет создан совершенно новый график. С выделенной новой памятью.

По умолчанию, только градиенты ( grad атрибут) для конечных узлов сохраняются, а градиенты для нелистовых узлов уничтожаются. Но это поведение можно изменить, как описано выше.

В этом отличие от Static Computation Graphs , используемого TensorFlow, где граф объявляется перед запуском программы . Парадигма динамического графа позволяет вам вносить изменения в вашу сетевую архитектуру во время выполнения , поскольку граф создается только при запуске фрагмента кода. Это означает, что график может быть переопределен в течение жизненного цикла программы. Это, однако, невозможно со статическими графами, где графы создаются перед запуском программы и просто выполняются позже.Динамические графики также упрощают отладку, поскольку источник ошибки легко отследить.

.

Смотрите также