нейронные сети: новости, туториалы, люди, история on Apple Podcasts
14 episodes
Все о нейронных сетях простым языком. Обзор фреймворков, рекомендации по использованию, советы, последние релизы библиотек. Глубокое обучение с использованием табличных данных, графических, музыкальных, видео файлов, графовых и 3D моделей. Исследование внутренностей библиотек deep learning, таких как PyTorch, TensorFlow, Apache MXNet, Torch. Разбор интервью ведущих экспертов по нейронным сетям. Комментарии к последними событиям из мира искуственного интеллекта. Регресионные, классификационные модели глубокого обучения, обучения с подкреплением или reinforcement learning и модели без учителя.
Как сделать хороший программный продукт?
Как сделать хороший программный продукт?
Простота и логичность приложения или фреймворка, который вы пишете — это залог успеха.
Андрей Ли
https://reinforcementlearning.ru
—
Send in a voice message: https://anchor.fm/andreiliphd/message
Какую операционную систему выбрать для глубокого обучения?
Какую операционную систему выбрать для глубокого обучения?
https://reinforcementlearning.ru
—
Send in a voice message: https://anchor.fm/andreiliphd/message
Как происходит процесс оптимизации в глубоком обучении?
Как происходит процесс оптимизации в глубоком обучении?
Объяснение процесса стохастического градиентного спуска.
Обзор оптимизаторов. Краткий экскурс в оптимизатор Adam.
https://reinforcementlearning.ru
—
Send in a voice message: https://anchor.fm/andreiliphd/message
Для чего нужно обнулять градиенты в нейронной сети?
Для чего нужно обнулять градиенты в нейронной сети?
Поясняется процесс обнуления градиентов в нейронной сети.
https://reinforcementlearning.ru
—
Send in a voice message: https://anchor.fm/andreiliphd/message
Как происходит процесс обратного распространения? Backpropagation простыми словами.
Как происходит процесс обратного распространения? Backpropagation простыми словами.
Для того, чтобы произвести шаг оптимизации нужно вычислить градиенты. В этом эпизоде мы поговорим о backpropagation.
https://reinforcementlearning.ru
—
Send in a voice message: https://anchor.fm/andreiliphd/message
Для чего нужна функция потерь и какие они бывают?
Отвечаю на вопрос что такое функция потерь и ее роль при тренировке нейронной сети. Привожу обзор функций потерь.
https://reinforcementlearning.ru
—
Send in a voice message: https://anchor.fm/andreiliphd/message
Top Podcasts In Technology
реквесты | Atlassian Git Tutorial
Пул-реквесты облегчают совместную работу разработчиков в Bitbucket.
В упрощенном виде запросы pull — это механизм, с помощью которого разработчик уведомляет участников команды о том, что он подготовил некий функционал. Закончив работу над функциональной веткой, разработчик создает запрос pull с помощью аккаунта Bitbucket. Так все участники процесса узнают, что требуется проверить код и выполнить слияние с главной веткой (main
).
Однако запрос pull — это не просто уведомление, а специальный форум для обсуждения предлагаемой функции. Если с изменениями возникли какие-либо проблемы, участники команды могут публиковать в запросе pull отзывы и даже изменять функцию с помощью дополнительных коммитов. Все эти действия отслеживается непосредственно внутри запроса pull.
По сравнению с другими моделями совместной работы это формальное решение для обмена коммитами обеспечивает гораздо более упорядоченный рабочий процесс. SVN и Git могут автоматически отправлять уведомления по электронной почте с помощью простого скрипта; однако когда дело доходит до обсуждения изменений, разработчикам обычно приходится вести диалог по электронной почте. Такой подход может внести путаницу, особенно если начинается обмен дополняющими коммитами. Запросы pull помещают все эти функции в удобный веб-интерфейс рядом с репозиториями Bitbucket.
Структура запроса pull
Создавая пул-реквест, вы всего лишь просите другого разработчика (например, человека, занимающегося поддержкой проекта) забрать ветку из вашего репозитория в его репозиторий. Поэтому для создания пул-реквеста необходимо указать 4 параметра: исходный репозиторий, исходную ветку, репозиторий назначения и ветку назначения.
Для многих параметров сервис Bitbucket определяет нужные значения по умолчанию. Однако в зависимости от того, как налажен процесс совместной работы команды, может потребоваться указать другие значения. На приведенной выше схеме показан запрос pull о слиянии функциональной ветки с официальной главной веткой, однако существует множество других способов использования запросов pull.
Порядок действий
Пул-реквесты можно применять в сочетании с процессами Feature Branch Workflow, Gitflow Workflow или Forking Workflow. При этом для использования пул-реквестов требуются две отдельные ветки или два отдельных репозитория. Поэтому пул-реквесты не будут работать при использовании процесса Centralized Workflow. Использование пул-реквестов в каждом из перечисленных процессов имеет свои нюансы, но общий подход описан ниже.
Разработчик создает функцию в отдельной ветке в своем локальном репозитории.
Разработчик отправляет эту ветку в публичный репозиторий Bitbucket командой push.
Разработчик создает запрос pull через Bitbucket.
Остальные участники команды проверяют код, обсуждают его и вносят изменения.
Человек, занимающийся поддержкой проекта, сливает функцию в официальный репозиторий и закрывает запрос pull.
Далее в этом разделе описывается, как запрос pull может использоваться в различных процессах совместной работы.
Использование запросов pull в рабочем процессе с функциональными ветками
В жизненном цикле функциональной ветки для организации совместной работы используется общий репозиторий Bitbucket, в котором разработчики создают новый функционал в изолированных ветках. Но вместо немедленного слияния кода с веткой main
разработчики должны создать запрос pull, чтобы начать обсуждение функциональной ветки до ее включения в основную базу кода.
В процессе Feature Branch существует только один публичный репозиторий, поэтому исходный и целевой репозитории в запросе pull всегда будут совпадать. Обычно разработчик указывает свою функциональную ветку в качестве исходной, а ветку
— в качестве целевой ветки.
Получив запрос pull, человек, занимающийся поддержкой проекта, должен принять решение. Если функциональная ветка готова к использованию, можно выполнить слияние кода с веткой main
и закрыть запрос pull. Но если в предлагаемых изменениях есть проблемы, можно оставить комментарии в запросе pull. Последующие коммиты будут отображаться рядом с соответствующими комментариями.
Кроме того, можно создать запрос pull для незавершенной функции. Например, если у разработчика возникают проблемы с реализацией определенного требования, он может создать запрос pull, содержащий его наработки. Другие разработчики могут оставить внутри этого запроса pull свои предложения или даже решить проблему, добавив дополнительные коммиты.
Использование запросов pull в рабочем процессе Gitflow
Рабочий процесс Gitflow похож на рабочий процесс с функциональными ветками, но устанавливает строгую модель ветвления, разработанную для релиза проекта. При добавлении запросов pull в рабочий процесс Gitflow разработчики получают удобное место для обсуждения ветки релиза или ветки сопровождения в ходе работы над ней.
Механизм запросов pull в рабочем процессе Gitflow аналогичен описанному выше: разработчик просто создает запрос pull, когда необходимо проверить функцию, релиз или ветку исправлений, а остальные участники команды получают уведомления через Bitbucket.
Слияние функциональных веток обычно выполняют с веткой разработки develop
, а слияние веток релизов и исправлений выполняют и с веткой develop
, и с веткой main
. Запросы pull можно использовать в качестве инструмента формального управления всеми этими слияниями.
Использование запросов pull в рабочем процессе с форками
В процессе с использованием форков разработчик помещает завершенную функциональную ветку в собственный публичный репозиторий, а не в общий репозиторий. После этого разработчик создает пул-реквест, оповещая человека, занимающегося поддержкой проекта, о готовности кода к проверке.
Для этого рабочего процесса наличие уведомления в запросе pull особенно важно, иначе человек, занимающийся поддержкой проекта, не сможет узнать о том, что другой разработчик добавил коммиты в свой репозиторий Bitbucket.
Поскольку у каждого разработчика есть свой публичный репозиторий, исходный и целевой репозитории в запросе pull будут отличаться. Исходным будет публичный репозиторий разработчика, а исходной веткой — та, что содержит предлагаемые изменения. Если разработчик предлагает слить функциональную ветку с основной базой кода, целевым репозиторием будет официальный репозиторий проекта, а целевой веткой — главная ветка
main
.
Кроме того, пул-реквесты можно использовать для совместной работы с другими разработчиками за пределами официального репозитория проекта. Например, если разработчик работал над функциональной веткой вместе с коллегой, они могут создать пул-реквест, указав в качестве назначения репозиторий Bitbucket коллеги, а не официальный репозиторий проекта. Тогда они смогут указать в качестве исходной ветки и ветки назначения одну и ту же функциональную ветку.
Два разработчика могут обсуждать и разрабатывать функцию внутри запроса pull. По окончании разработки один из них создает новый запрос pull на слияние этой функции с официальной главной веткой. Такая гибкость делает запросы pull невероятно мощным инструментом совместной работы в рамках рабочего процесса с форками.
Пример
В приведенном ниже примере демонстрируется использование запросов pull в рабочем процессе с форками. Он одинаково применим как для разработчиков, работающих в маленьких командах, так и для независимых разработчиков, участвующих в проекте с открытым исходным кодом.
В данном примере Мэри — разработчик, а Джон — человек, занимающийся поддержкой проекта. У обоих есть собственные публичные репозитории Bitbucket, и в репозитории Джона находится официальный проект.
Мэри создает форк официального проекта
Чтобы начать работу над проектом, Мэри сначала должна создать форк репозитория Джона в Bitbucket. Для этого ей нужно войти в Bitbucket, перейти к репозиторию Джона и нажать кнопку Fork.
Указав имя и описание для репозитория, создаваемого с помощью форка, она получит копию серверной части проекта.
Мэри клонирует свой репозиторий Bitbucket
Затем Мэри должна клонировать репозиторий Bitbucket, который она только что создала с помощью форка. Так она получит собственную рабочую копию проекта на своей локальной машине. Она может сделать это с помощью следующей команды:
git clone https://[email protected]/user/repo.git
Помните, что команда git clone
автоматически создает удаленный репозиторий origin
, который указывает на репозиторий Мэри, созданный с помощью форка.
Мэри разрабатывает новый функционал
Прежде чем писать какой бы то ни было код, Мэри должна создать новую ветку для функции. Эту ветку она будет использовать в качестве исходной в запросе pull.
git checkout -b some-feature
# Edit some code
git commit -a -m "Add first draft of some feature"
Мэри может выполнять сколько угодно коммитов во время работы над функциональной веткой. Если история создания функциональной ветки выглядит слишком запутанной, она может использовать интерактивную операцию rebase для удаления или склеивания ненужных коммитов. Такая очистка истории функциональной ветки в больших проектах помогает человеку, занимающемуся поддержкой проекта, быстрее понять, что включено в пул-реквест.
Мэри помещает функциональную ветку в свой репозиторий Bitbucket
Закончив свою задачу, Мэри помещает функциональную ветку в собственный репозиторий Bitbucket (не в официальный репозиторий проекта) с помощью простой команды git push
:
git push origin some-branch
Так изменения Мэри будут доступны человеку, занимающемуся поддержкой проекта (или любым другим участникам, которым может понадобиться доступ к этим изменениям).
Мэри создает запрос pull
После добавления своей функциональной ветки в Bitbucket Мэри из своего аккаунта Bitbucket может создать пул-реквест, перейдя в свой репозиторий, созданный с помощью форка, и нажав на кнопку Pull request в верхнем правом углу. Отобразится форма, в которой репозиторий Мэри автоматически будет указан в качестве исходного. Мэри останется указать исходную ветку, а также репозиторий и ветку назначения.
Мэри хочет выполнить слияние функциональной ветки с основной базой кода. При этом исходной веткой будет ее функциональная ветка, целевым репозиторием — публичный репозиторий Джона, а целевой веткой — ветка main
. Мэри потребуется ввести заголовок и описание запроса pull. Если кто-либо еще кроме Джона должен одобрить код Мэри, она может указать нужных людей в поле Reviewers (Проверяющие).
После создания запроса pull Джону будет отправлено уведомление через Bitbucket и (опционально) по электронной почте.
Джон просматривает запрос pull
Джон может увидеть все созданные другими разработчиками пул-реквесты, перейдя на вкладку Pull request в своем репозитории Bitbucket. Нажав на пул-реквест Мэри, он увидит описание пул-реквеста, историю коммитов функциональной ветки и все изменения в пул-реквесте.
Если Джон считает функционал готовым к слиянию с проектом, ему достаточно нажать кнопку Merge (Слияние), чтобы одобрить запрос pull и выполнить слияние функционала Мэри со своей веткой main
.
Но для примера представим, что Джон нашел небольшой баг в коде Мэри и хочет, чтобы он был исправлен перед слиянием. Джон может либо опубликовать комментарий к запросу pull в целом, либо выбрать определенный коммит в истории функциональной ветки и прокомментировать его.
Мэри добавляет дополняющий коммит
Если у Мэри есть какие-либо вопросы по поводу отзыва Джона, она может ответить внутри запроса pull, используя его как форум для обсуждения функции.
Для исправления ошибки Мэри добавляет другой коммит в свою функциональную ветку и помещает этот коммит в свой репозиторий Bitbucket, как и в первый раз. Коммит автоматически добавится в исходный запрос pull, и Джон сможет снова просмотреть изменения прямо рядом с его исходным комментарием.
Джон принимает запрос pull
В конечном счете Джон принимает изменения, выполняет слияние функциональной ветки с главной и закрывает запрос pull. Функциональная ветка включена в проект. И теперь каждый разработчик проекта может скопировать изменения в свой локальный репозиторий, выполнив стандартную команду git pull
.
Куда можно перейти отсюда
Теперь у вас есть все необходимые инструменты, чтобы начать использование пул-реквестов в текущем рабочем процессе. Помните, что пул-реквесты не заменяют процессы совместной работы в Git, а лишь дополняют их, облегчая взаимодействие всех членов команды.
Как рисовать людей. Учебные пособия
Пошаговые простые обучающие руководства
Хотите научиться рисовать реалистичных людей? Здесь вы найдете растущую коллекцию бесплатных учебных пособий с пошаговыми инструкциями и примерами рисунков, которые помогут вам в дальнейшем. Независимо от того, начинаете ли вы рисовать людей или рисуете их уже много лет, всегда есть место для совершенствования.
Научитесь рисовать людей шаг за шагом
В учебниках этой серии вы найдете пошаговые инструкции с примерами рисунков, которые точно объясняют, как рисовать человеческое тело.
Мы начинаем с простых кругов и линий, которые мы превращаем в базовую основу для рисования человеческих пропорций. Формы уточняются с помощью простых советов и приемов, и, прежде чем вы это узнаете, вы нарисовали человека!
Практика ведет к совершенству
Рисование — это перенос того, что вы видите, на лист бумаги. Как и при изучении нового языка, вам просто нужно знать, как применять определенные правила.
Если вы регулярно рисуете людей, то однажды вы сможете вообще обойтись без кругов и направляющих, потому что со временем у вас разовьется чувство пространства и пропорции. Вещи, которые кажутся сложными, например, рисование портретов, будут даваться вам легко. Благодаря повторной практике вы будете становиться все более и более уверенными в рисовании, а также будете получать от этого гораздо больше удовольствия.
Если вы еще не часто рисовали акварелью или хотите кое-что освежить, рекомендую ознакомиться с основами расходных материалов и техники акварельной живописи. Многое из этого может пригодиться вам при рисовании людей.
Могут ли новички научиться рисовать людей?
Разумеется, обучающие программы также подходят для начинающих! Вам нужно всего три вещи: карандаш, бумага и немного времени.
Те, кто наделен талантом, смогут учиться быстрее. Те, кто думает, что у них нет таланта, могут компенсировать это при достаточном усердии и тоже стать хорошими. В конце концов, мы все можем научиться рисовать.
Советы по рисованию людей
- Первые попытки будут самыми ужасными, но пусть это вас не обескураживает! Ваш следующий рисунок всегда будет лучше предыдущего.
- В дополнение к учебникам для практики стоит взять фотографию в качестве ориентира.
- Асимметрия — это не недостаток, это часть природы (даже если мы через СМИ привыкли к почти безупречным людям).
- Неважно, тренируетесь ли вы в альбоме для рисования или на разных листочках бумаги: главное – продолжать практиковаться и продолжать делать ошибки, на которых можно чему-то научиться.
- Рисовать людей не всегда легко, но при наличии терпения и усердия каждый может научиться этому. Так что дерзайте и не сдавайтесь!
Включите JavaScript для просмотра комментариев с помощью Disqus.
Контакты
Получить информационный бюллетень
Никогда не пропустите обновления на How-to-Art. com!
- Магазин Redbubble
| Инициатива веб-доступности (WAI)
в учебниках
Таблицы данных используются для организации данных с логической взаимосвязью в сетках. Таблицы со специальными возможностями нуждаются в разметке HTML, которая указывает ячейки заголовков и ячеек данных и определяет их взаимосвязь. Вспомогательные технологии используют эту информацию для предоставления контекста пользователям.
Ячейки заголовка должны быть размечены В этом руководстве показано, как применить соответствующую структурную разметку к таблицам. Он включает следующие страницы: Таблицы с одним заголовком для строк или столбцов: Для таблиц с легко различимым содержимым разметьте ячейки заголовков с помощью Таблицы с двумя заголовками имеют простой заголовок строки и простой заголовок столбца: для таблиц с неясными направлениями заголовков определите направление каждого заголовка, задав для атрибута Таблицы с неправильными заголовками имеют ячейки заголовков, которые охватывают несколько столбцов и/или строк: Для этих таблиц определите группы столбцов и строк и установите диапазон ячеек заголовков, используя Таблицы с многоуровневыми заголовками имеют несколько ячеек заголовков, связанных с ячейкой данных: для таблиц, которые настолько сложны, что ячейки заголовков не могут быть связаны строго горизонтально или вертикально, используйте атрибуты Заголовок и сводка: Заголовок определяет общую тему таблицы и полезен в большинстве ситуаций. Сводка обеспечивает ориентацию или подсказки по навигации в сложных таблицах. Некоторые форматы документов, отличные от HTML, такие как PDF, предоставляют аналогичные механизмы для разметки структур таблиц. Приложения для обработки текстов также могут предоставлять механизмы для разметки таблиц. Разметка таблиц часто теряется при преобразовании из одного формата в другой, хотя некоторые программы могут предоставлять функции, помогающие преобразовать разметку таблиц. Многие инструменты веб-разработки и системы управления контентом (CMS) предоставляют функции для определения ячеек заголовков во время создания таблицы без необходимости редактирования кода вручную. В этом учебнике представлены рекомендации по созданию таблиц, используемых для отображения данных в сетке. Этот учебник не относится к таблицам, используемым для компоновки. Таблицы без структурной разметки для различения и правильной связи между заголовком и ячейками данных создают барьеры для доступа. Полагаться только на визуальные подсказки недостаточно для создания доступной таблицы. При структурной разметке заголовки и ячейки данных могут быть определены программным обеспечением, а это означает, что: Люди, использующие программы чтения с экрана , могут читать вслух заголовки строк и столбцов при перемещении по таблице. Программа чтения с экрана озвучивает одну ячейку за раз и ссылается на соответствующие ячейки заголовков, чтобы программа чтения не теряла контекст. Некоторые люди используют альтернативные способы отображения данных , например, используя пользовательские таблицы стилей для более заметного отображения ячеек заголовков. , а ячейки данных — , чтобы сделать таблицы доступными. Для более сложных таблиц могут потребоваться явные ассоциации с использованием область
, id
и заголовки
атрибуты. , а ячейки данных с помощью элементов. Scope
значение col
или row
. colgroup
и rowgroup
значения атрибута области действия. id
и заголовков
для явно связать заголовок и ячейки данных. Как правило, таблицы не предназначены для использования в целях разметки. Вместо этого рекомендуется использовать каскадные таблицы стилей (CSS) для визуального представления.
Почему это важно?