Как научиться писать стихи с нуля


Как научиться писать стихи — советы начинающим

Аварийные службы

Автомототранспорт

Бизнес

Для потребителя

Дом и семья

Животные и растения

Здоровье и медицина

Интересные сайты

Интернет

Компьютеры

Культура и искусство

Наука

Непознанное

Новости, СМИ

Образование

Общество и государство

Промышленность

Психология

Работа и трудоустройство

Развлечения

Религия

Рестораны, кафе, ТРЦ

Родители и дети

Сельское хозяйство

Спорт

Справки и информация

Строительство и ремонт

Телефония и связь

Торговля

Туризм, путешествия, отдых

Услуги

Финансы

Хобби, рукоделие

.

советов по написанию стихов: 10 советов, как написать стихотворение

Jerz> Письмо> Общие советы по творческому письму [Поэзия | Художественная литература]

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

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

Эти советы помогут вам совершить важный переход:

  • вдали от написание стихов, чтобы отпраздновать, отметить или уловить свои собственные чувства (в этом случае вы, поэт, являетесь центром вселенной стихотворения)
  • по направлению к написание стихов, чтобы вызвать у читателя чувств (в этом случае стихотворение существует полностью для того, чтобы служить читателю).
  1. Знай свою цель
  2. Избегайте клише
  3. Избегайте сентиментальности
  4. Использовать изображения
  5. Используйте метафору и сравнение
  6. Используйте конкретные слова вместо абстрактных слов
  7. Тема для общения
  8. Подорвать обыденное
  9. Рифма с особой осторожностью
  10. Пересмотр, Пересмотр, Пересмотр

Совет № 1 Знайте свою цель.

Если вы не знаете, куда собираетесь, как вы можете туда добраться?

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

а

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

Совет № 2 Избегайте клише

Стивен Майнот определяет клише как: «Метафора или сравнение, которое стало настолько привычным из-за чрезмерного использования, что средство передвижения… больше не придает никакого значения тенору.Оно не дает ни яркости новой метафоры, ни силы отдельного неизмененного слова ... Это слово также используется для описания чрезмерно используемых, но неметафорических выражений, таких как «проверено и верно» и «каждый и каждый» »( Three Genres: The Написание поэзии, художественной литературы и драмы , 405).

Клише также описывает другие чрезмерно используемые литературные элементы. «Знакомые сюжеты и стандартные персонажи - это штампы в большом масштабе» (Минот 148). Клише могут быть чрезмерно используемыми темами, типами персонажей или сюжетами.Например, ковбой «Одинокий рейнджер» - это клише, потому что его использовали так много раз, что люди больше не находят его оригинальным.

Работа, полная клише, подобна тарелке старой еды: неаппетитной.

Дополнительные советы по творческому письму.

Клише работают против оригинального сообщения. Люди ценят творческий талант. Они хотят видеть работу выше нормы. Когда они видят произведение без клише, они знают, что писатель старался изо всех сил, делая все возможное, чтобы быть оригинальным.Когда они видят произведение, доведенное до краев клише, они чувствуют, что писатель не показывает им ничего сверх обычного. (Если вы не заметили, этот абзац полон клише… Держу пари, вам было скучно до слез.)

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

Примеры клише:
  • занят как пчела
  • устал как собака
  • Работаю пальцами до костей
  • свекла красная
  • на рогах дилеммы
  • слепой как летучая мышь
  • ест как лошадь
  • ест как птица
Как улучшить клише

Я воспользуюсь клише «занят, как пчела», и покажу, как можно выразить ту же идею без клише.

  1. Определите, что пытается сказать клишевая фраза.
    В этом случае я вижу, что «занят как пчела» - это способ описать состояние занятости.
  2. Придумайте оригинальный способ описать то, что пытается описать клише.
    Для этого клише я начал с размышлений о занятости. Я задал себе вопрос: «Что связано с занятостью?» Я придумал: колледж, моя подруга Джессика, руководители корпораций, старушки, делающие лоскутные одеяла и консервные изделия, и компьютер, скрипачи, играющие на скрипке.Из этого списка я выбрал вещь, которая не так часто ассоциируется с занятостью: скрипки.
  3. Создайте фразу, используя неклишированный способ описания.
    Я взял свой объект, связанный с занятостью, и превратил его в фразу: «Я чувствую себя луком, играющим на ирландской катушке». Эта фраза передает понятие «занятость» намного лучше, чем заезженное, знакомое клише. Мысль читателя может представить себе безумную ярость смычка на скрипке и знать, что поэт говорит об очень неистовом занятии.Фактически, те читатели, которые знают, как звучит ирландский ролик, могут даже рассмеяться от этого свежего способа описания «занятости».

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

Совет № 3 Избегайте сентиментальности.

Сентиментальность «преобладает в прямом обращении к эмоциям жалости и любви…». Популярные предметы - щенки, бабушки и дедушки, а также молодые любовники »(Minot 416).«Когда у читателей возникает ощущение, что такие эмоции, как гнев или негодование, искусственно выдвигаются ради них самих, они не воспринимают стихотворение всерьез» (132).

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

Совет № 4 Используйте изображения.

«БУДЬТЕ ХУДОЖНИКОМ НА СЛОВАХ», - говорит почетный профессор английского языка UWEC, поэт и автор песен Пег Лаубер. Она говорит, что поэзия должна стимулировать шесть чувств:

  • прицел
  • слух
  • запах
  • сенсорный
  • вкус
  • кинезиология (движение)

Примеры.

  • «Солнечный свет лакирует ветви магнолии малиновым» (прицел)
  • «Жужжание пылесоса пугает моего хорька» (слух)
  • «Пингвины пиломатериалы для своих гнезд» (кинезиология)

Лаубер советует своим ученикам создавать свежие, яркие изображения («творческие»).Будь камерой. Сделайте читателя там с поэтом / оратором / рассказчиком. (См. Также: «Покажи, а не говори»)

Совет № 5 Используйте метафору и сравнение.

Используйте метафоры и сравнения, чтобы привнести образы и конкретные слова в свой текст.

Метафора

Метафора - это утверждение, которое притворяется, что одно на самом деле другое:

Пример: «Солист - неуловимая саламандра.”

Эта фраза не означает, что солист - буквально саламандра. Скорее, он берет абстрактную характеристику саламандры (неуловимость) и проецирует ее на человека. Используя метафору для описания ведущего певца, поэт создает гораздо более яркую картину его / ее, чем если бы поэт просто сказал: «Голос ведущего певца трудно различить».

Аналог

Сравнение - это утверждение, в котором вы говорите, что один объект похож на другой.Сравнение использует слова «как» или «как».

Пример: «Он был любопытен, как гусеница» или «Он был любопытен, как гусеница»

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

Примечание: сравнение автоматически не является более или менее «поэтическим», чем метафора. Вы не создадите стихотворения лучше, если замените все свои сравнения метафорами, или наоборот.Следует помнить, что сравнение, умозаключение и предложение - все это важные инструменты поэзии; сравнения и метафоры - инструменты, которые помогут в этих областях.

Совет № 6 Используйте конкретные слова вместо абстрактных слов.

Конкретные слова описывают вещи, которые люди испытывают своими чувствами.

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

Конкретные слова поэта помогают читателю составить «представление» о том, о чем говорится в стихотворении.Когда у читателя есть «картина» того, о чем идет речь в стихотворении, он может лучше понять, о чем говорит поэт.

Абстрактные слова относятся к концепциям или чувствам.

«Свобода» - это концепция, «счастье» - это чувство, и никто не может договориться о том, является ли «любовь» чувством, концепцией или действием.

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

Преобразование абстрактных слов в конкретные слова

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

Пример: «Она была счастлива».

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

Улучшение: «Ее улыбка расплывалась красным оттенком на созревающих помидорах».

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

Проф. Ерц обращает внимание Кара:

Расширение : Теперь давайте что-нибудь сделаем с этим изображением.

 Она дулась в саду, сдержанная ... жестко; Не желает смотреть в лицо его поцелуям - или не может. Однажды осенним утром она почувствовала кислое лицо Созревает до беспомощной улыбки, как томатно-красный. Ее приоткрытые губы прошептали: «Привет, солнышко!» 

Хорошо, теперь изображение стало до неприличия очевидным, но вы можете видеть, как введение помидора позволяет нам установить множество дополнительных связей.В то время как исходный пример Кары просто сообщает о статическом эмоциональном состоянии - «Она чувствовала себя счастливой», образ созревающего помидора, который Кара представила как простое сравнение для описания улыбки, превратился в нечто гораздо более сложное. Независимо от того, что слово «помидор» вызвало в вашем сознании , абстракция, подобная «счастливому», никогда не сможет растянуться и стать целым стихотворением, не полагаясь на конкретные образы. –DGJ

Совет № 7 Тема общения.

Поэзия всегда имеет тему. Тема - это не просто тема, а идея с мнением.

Тема = Идея + Мнение

Тема: «Вьетнамская война»

Это не тема. Это всего лишь тема. Это просто событие. В этом предложении

нет идей, мнений или утверждений о жизни или мудрости.

Тема: «История показывает, что, несмотря на наши заявления о том, что мы миролюбивы, к сожалению, каждый человек втайне мечтает обрести славу через конфликт.”

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

Совет №8 Подорвать обыденное.

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

Пример: Люди ездят на автобусе каждый день.

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

Возьмите обыкновенный и переверните его с ног на голову. (Слово «ниспровергать» буквально означает «перевернуть вверх дном».)

Совет № 9 Рифмуйте с особой осторожностью.

Рифма и размер (комбинация ударных и безударных слов) могут быть опасны при неправильном использовании. Помните детские песенки? Если вы выберете схему рифмы, которая заставит ваше стихотворение звучать как песня, это снизит качество вашего стихотворения.

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

Если вы чувствуете, что готовы создать рифмованное стихотворение, обратитесь к главам 6–10 книги Стивена Майнота « Три жанра: написание стихов, художественной литературы и драмы» . 6 th ed., Для получения дополнительной помощи.

Совет № 10 Пересмотреть, Пересмотреть, Пересмотреть.

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

На редактирование:

  • Уберите свое стихотворение на несколько дней, а затем вернитесь к нему. Когда перечитываешь, не кажется ли что-нибудь запутанным? Тяжело следовать? Видите ли вы что-нибудь, что требует улучшения, на что вы не обратили внимания в первый раз? Часто, когда вы пишете, вы можете упустить важные детали, потому что хорошо знакомы с темой. Повторное прочтение стихотворения поможет вам увидеть его «со стороны» читателя.
  • Покажи свое стихотворение другим и попроси критики.Не довольствуйтесь ответом типа "Хорошее стихотворение". Вы ничего не узнаете из такого ответа. Вместо этого найдите людей, которые скажут вам, что вам нужно улучшить в своем стихотворении.

26 мая 2000 г. - первоначально представила Кара Зил в качестве задания для класса технического письма профессора Йерца
01 августа 2000 г. - изменена и опубликована Джерцем
30 ноября 2001 г. - незначительные изменения внесены Джерцем
21 июля 2011 г. - незначительное обновление
22 мая 2013 - добавлено вступление перед подсказками.
24 декабря 2017 г. - незначительные изменения форматирования
09 апреля 2019 г. - исправлена ​​1000-летняя ошибка, вызванная опечаткой в ​​приведенной выше строке

См. Также:

Раздаточные материалы> Писательское творчество> Поэтические советы


Об этой странице
Кара Зил, специалист по творческому письму UWEC, составила эти советы, чтобы помочь студентам на моем уроке английского 110 («Введение в письмо в колледже»). Я немного отредактировал и расширил ее текст, но я думаю, что она отлично справилась - теперь это обязательных чтений для начинающих студентов-поэтов в моих классах.–DGJ
.

6 шагов для написания любого алгоритма машинного обучения с нуля: пример использования Perceptron | Джон Салливан

Написание алгоритма машинного обучения с нуля - чрезвычайно полезный опыт обучения.

Он дает вам это «ах-ха!» момент, когда он наконец щелкает, и вы понимаете, что на самом деле происходит под капотом.

Некоторые алгоритмы просто сложнее других, поэтому начните с чего-нибудь простого, например, однослойного персептрона.

Я проведу вас через следующий 6-этапный процесс написания алгоритмов с нуля, используя Perceptron в качестве примера:

  1. Получите общее представление об алгоритме
  2. Найдите несколько различных источников обучения
  3. Разбейте алгоритм на фрагменты
  4. Начните с простого примера
  5. Подтвердите с помощью надежной реализации
  6. Напишите свой процесс

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

По крайней мере, вы должны быть в состоянии ответить на следующие вопросы:

  • Что это?
  • Для чего он обычно используется?
  • Когда я НЕ МОГУ этим пользоваться?

Что касается персептрона, давайте продолжим и ответим на следующие вопросы:

  • Однослойный персептрон - это самая простая нейронная сеть. Обычно он используется для задач двоичной классификации (1 или 0, «да» или «нет»).
  • Некоторыми простыми применениями могут быть анализ настроений (положительный или отрицательный ответ) или прогнозирование дефолта по ссуде («дефолт», «не дефолт»).В обоих случаях граница принятия решения должна быть линейной.
  • Если граница принятия решения нелинейна, вы действительно не можете использовать персептрон. Для этих задач вам нужно будет использовать что-то другое.

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

Кто-то лучше учится по учебникам, кто-то - по видео.

Лично я люблю прыгать и использовать различные типы источников.

Что касается математических деталей, то учебники отлично справляются с задачей, но для более практических примеров я предпочитаю сообщения в блогах и видео на YouTube.

Вот несколько отличных источников персептрона:

Учебники

Блоги

Видео

Теперь, когда мы собрали наши источники, пора приступить к обучению.

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

Запишите пункты списка и попытайтесь обрисовать алгоритм.

Пройдя по источникам, я разбил Персептрон на следующие 5 частей:

  1. Инициализирую веса
  2. Умножьте веса на входные и просуммируйте их
  3. Сравните результат с порогом для вычисления вывода (1 или 0)
  4. Обновить веса
  5. Повторить

Давайте подробно рассмотрим каждый.

1. Инициализируйте веса

Для начала мы инициализируем вектор весов.

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

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

Затем мы умножим веса на входные данные, а затем просуммируем их.

Чтобы упростить работу, я раскрасил веса и соответствующие им элементы в первой строке.

После того, как мы умножим веса на характеристики, мы суммируем их. Это также известно как скалярное произведение.

Окончательный результат - 0. Я буду обозначать этот временный результат как «f».

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

Я решил использовать в качестве порога 0, но вы можете поэкспериментировать с этим и попробовать другие числа.

Поскольку скалярное произведение «f», которое мы вычислили (0), не превышает нашего порогового значения (0), наша оценка равна нулю.

Я обозначил оценку как y со шляпой (также известной как «y hat»), с нижним индексом 0, чтобы соответствовать первой строке. Вместо этого вы могли бы использовать 1 для первой строки, это не имеет значения. Я просто решил начать с 0.

Если мы сравним этот результат с фактическим значением, мы увидим, что наши текущие веса неверно предсказывают фактический результат.

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

Теперь мы обновим веса.Вот уравнение, которое мы собираемся использовать:

Основная идея состоит в том, что мы корректируем текущий вес на итерации «n», чтобы получить новый вес для использования в следующей итерации, «n + 1».

Чтобы настроить вес, нам нужно установить «скорость обучения». Обозначается это греческой буквой «эта».

Я выбрал 0,1 для скорости обучения, но вы можете поэкспериментировать с другими числами, как и с порогом.

Вот краткое изложение того, что у нас есть на данный момент:

А теперь давайте посчитаем новые веса для итерации n = 2.

Мы успешно завершили первую итерацию алгоритма персептрона.

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

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

Один полный просмотр набора данных известен как «эпоха».

Поскольку наш набор данных состоит из 3 строк, нам потребуется три итерации, чтобы завершить 1 эпоху.

Мы можем установить общее количество итераций или эпох, чтобы продолжить выполнение алгоритма.Может быть, мы хотим указать 30 итераций (или 10 эпох).

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

На следующей итерации мы переходим ко второй строке функций.

Я не буду повторять каждый шаг снова, но вот следующий расчет скалярного произведения:

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

Теперь, когда мы вручную разбили алгоритм на части, пора приступить к его реализации в коде.

Для простоты я всегда люблю начинать с очень небольшого «игрушечного набора данных».

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

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

Я собираюсь добавить фиктивный объект «x0», который представляет собой столбец из единиц.Я сделал это для того, чтобы наша модель рассчитала член смещения.

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

Вот код для ввода данных:

 # Импорт библиотек 
# NAND Gate
# Примечание: x0 - фиктивная переменная для члена смещения
# x0 x1 x2
x = [[1., 0., 0 .],
[1., 0., 1.],
[1., 1., 0.],
[1., 1., 1.]] y = [1.,
1.,
1.,
0.]

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

Первым шагом является инициализация весов.

 # Инициализировать веса 
import numpy as np
w = np.zeros (len (x [0])) Out:
[0. 0. 0.]

Имейте в виду, что длина вектора весов должна чтобы соответствовать количеству функций. В этом примере логического элемента И-НЕ эта длина равна 3.

Далее мы умножим веса на входные данные, а затем просуммируем их.

Другое название для этого - «скалярное произведение».

Опять же, мы можем использовать Numpy, чтобы легко выполнить эту операцию.Мы будем использовать метод .dot () .

Давайте начнем с скалярного произведения весового вектора и первой строки функций.

 # Dot Product 
f = np.dot (w, x [0])
print fOut:
0,0

Как и ожидалось, результат равен 0.

Чтобы не противоречить нашим примечаниям в предыдущем разделе, я назначил скалярное произведение на переменную «f».

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

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

Я собираюсь сделать порог «z» равным 0. Если скалярное произведение «f» больше 0, наш прогноз будет 1. В противном случае он будет равен нулю.

Имейте в виду, что прогноз обычно обозначается с отметкой в ​​каратах сверху, также известной как «шляпа». Переменная, которой я назначу прогноз, - yhat .

 # Функция активации 
z = 0,0
, если f> z:
yhat = 1.
else:
yhat = 0.

print yhat

Out:
0.0

Как и ожидалось, прогноз равен 0.

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

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

Теперь, когда мы сделали прогноз, мы готовы обновить веса.

Нам нужно будет установить скорость обучения, прежде чем мы сможем это сделать. Чтобы соответствовать нашему предыдущему примеру, я присвою скорости обучения «eta» значение 0,1.

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

 # Обновить веса 
eta = 0,1
w [0] = w [0] + eta * (y [0] - yhat) * x [0] [0]
w [1] = w [1] + eta * (y [0] - yhat) * x [0] [1]
w [2] = w [2] + eta * (y [0] - yhat) * x [0] [2]

напечатать w

Out:
[0.1 0. 0.]

Мы видим, что наши веса обновлены, так что мы готовы продолжать работу.

Теперь, когда мы проработали каждый шаг, пришло время собрать все воедино.

Последняя часть, которую мы не обсуждали, - это наша функция потерь. Это функция, которую мы пытаемся минимизировать, в нашем случае это ошибка суммы квадратов (SSE).

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

Собирая все вместе, вот как выглядит полная функция:

 import numpy as np 

# Perceptron function
def perceptron (x, y, z, eta, t):
'' '
Input Parameters:
x : набор данных входных характеристик
y: фактические выходы
z: порог функции активации
eta: скорость обучения
t: количество итераций
'' '

# инициализация весов
w = np.zeros (len (x [0]))
n = 0

# инициализация дополнительных параметров для вычисления суммы квадратов ошибок
yhat_vec = np.ones (len (y)) # вектор для прогнозов
errors = np.ones (len (y)) # вектор ошибок (фактические - прогнозы)
J = [] # вектор для функции затрат SSE

while n = z:
yhat = 1.
else:
yhat = 0.
yhat_vec [i] = yhat

# обновление весов
для j в xrange (0, len (w)):
w [j] = w [j] + eta * (y [i] -yhat) * x [i] [j]

n + = 1
# вычисление суммы квадратов ошибок
для i в xrange (0, len (y)):
errors [i] = (y [i] -yhat_vec [i]) ** 2
J.append (0.5 * np.sum (errors))

return w, J

Теперь, когда мы закодировали полный Персептрон, давайте продолжим и запустите его:

 # x0 x1 x2 
x = [[1., 0., 0.],
[1., 0., 1.],
[1., 1., 0.],
[1., 1., 1.]]

y = [1. ,
1.,
1.,
0.]

z = 0,0
eta = 0,1
t = 50

print "Веса:"
print perceptron (x, y, z, eta, t) [ 0]

print "Ошибки:"
print perceptron (x, y, z, eta, t) [0]

Out:
Веса:
[0,2 -0,2 -0,1]
Ошибки:
[0,5, 1,5, 1,5, 1,0, 0,5, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0.0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0]

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

Когда ошибка переходит в 0 и остается на этом уровне, мы знаем, что наша модель сходится. Это говорит нам о том, что наша модель правильно «выучила» соответствующие веса.

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

К этому моменту мы нашли различные учебные ресурсы, проработали алгоритм вручную и протестировали его в коде на простом примере.

Пришло время сравнить наши результаты с проверенной реализацией. Для сравнения воспользуемся перцептроном из scikit-learn.

Мы проведем это сравнение, выполнив следующие шаги:

  1. Импорт данных
  2. Разделение данных на наборы для обучения / тестирования
  3. Обучите наш Perceptron
  4. Протестируйте Perceptron
  5. Сравните с Perceptron
  6. scikit-learn

Начнем с импорта данных.Вы можете получить копию набора данных здесь.

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

 import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt

df = pd.read_csv ("dataset.csv")
plt.scatter (df.values ​​[:, 1], df.values ​​[: , 2], c = df ['3'], alpha = 0.8)

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

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

Я использовал Pandas для импорта csv, который автоматически помещает данные в фрейм данных.

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

Характеристики находятся в столбцах 1 и 2, поэтому я использовал их в функции диаграммы рассеяния. Столбец 0 - это фиктивная функция единиц, которую я включил, чтобы вычислить точку пересечения. Это должно быть знакомо тому, что мы делали с вентилем NAND в предыдущем разделе.

Наконец, я раскрасил два класса, используя c = df ['3'], alpha = 0.8 в функции диаграммы рассеяния. Результатом являются данные в столбце 3 (0 или 1), поэтому я сказал функции раскрасить два класса, используя столбец «3».

Дополнительную информацию о функции диаграммы рассеяния Matplotlib можно найти здесь.

Теперь, когда мы подтвердили, что данные можно разделить линейно, пора разделить данные.

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

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

Начну с перемешивания данных. Если вы посмотрите на исходный файл, то увидите, что данные сгруппированы по строкам с 0 в выходных данных (третий столбец), а затем следуют все единицы. Я хочу встряхнуть и добавить немного случайности, поэтому я собираюсь перемешать это.

 df = df.values ​​

np.random.seed (5)
np.random.shuffle (df)

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

Чтобы результаты были воспроизводимы для вас, я установил случайное начальное число (5). После того, как мы закончим, попробуйте изменить случайное начальное число и посмотрите, как изменятся результаты.

Далее я разделю 70% моих данных на обучающий набор и 30% на тестовый набор.

 поезд = df [0: int (0.7 * len (df))] 
test = df [int (0.7 * len (df)): int (len (df))]

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

 x_train = train [:, 0: 3] 
y_train = train [:, 3]

x_test = test [:, 0: 3]
y_test = test [:, 3]

Я выбрал 70% / 30 % для моих наборов поездов / тестов только для этого примера, но я рекомендую вам изучить другие методы, такие как перекрестная проверка в k-кратном размере.

Далее мы обучим нашего персептрона.

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

 def perceptron_train (x, y, z, eta, t): 
''
Входные параметры:
x: набор данных входных функций
y: фактические выходы
z: порог функции активации
eta: скорость обучения
t : количество итераций
'' '

# инициализация весов
w = np.zeros (len (x [0]))
n = 0

# инициализация дополнительных параметров для вычисления суммы квадратов ошибок
yhat_vec = np .ones (len (y)) # вектор для прогнозов
errors = np.ones (len (y)) # вектор для ошибок (фактическое - прогнозы)
J = [] # вектор для функции стоимости SSE

при n = z:
yhat = 1.
else:
yhat = 0.
yhat_vec [i] = yhat

# обновление весов
для j в xrange (0, len (w)):
w [j] = w [j] + eta * (y [i] -yhat) * x [i] [j]

n + = 1
# вычисление суммы квадратов ошибок
для i в xrange (0, len (y)):
errors [i] = (y [i] -yhat_vec [ i]) ** 2
J.append (0,5 * np.sum (errors))

return w, J

z = 0,0
eta = 0,1
t = 50

perceptron_train (x_train, y_train, z, eta , t)

Давайте продолжим и посмотрим на веса и ошибку суммы квадратов.

 w = perceptron_train (x_train, y_train, z, eta, t) [0] 
J = perceptron_train (x_train, y_train, z, eta, t) [1]

print w
print J

Out:
[-0.5 -0,29850122 0,35054929]
[4,5, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0]

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

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

Пришло время протестировать наш персептрон. Для этого мы создадим небольшую функцию perceptron_test .

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

Единственная деталь, которую мы не видели, - это precision_score . Это метрическая функция оценки от scikit-learn. Вы можете узнать об этом подробнее здесь.

Собирая все это вместе, вот как выглядит код:

 из sklearn.metrics import precision_score 

w = perceptron_train (x_train, y_train, z, eta, t) [0]

def perceptron_test (x, w, z, eta, t):
y_pred = []
для i в xrange (0, len (x-1)):
f = np.dot (x [i], w)

# функция активации
if f > z:
yhat = 1
else:
yhat = 0
y_pred.append (yhat)
return y_pred

y_pred = perceptron_test (x_test, w, z, eta, t)

print "Оценка точности:"
print precision_score (y_test, y_pred)

Out:
Оценка точности:
1,0

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

Последний шаг - сравнить наши результаты с Perceptron из scikit-learn. Вот код этой модели:

 от sklearn.linear_model import Perceptron 

# обучение sklearn Perceptron
clf = Perceptron (random_state = None, eta0 = 0.1, shuffle = False, fit_intercept = False)
clf.fit (x_train, y_train)
y_predict = clf_test.predict (x

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

 Out: 
Вес склеарна:
[-0,5 -0,29850122 0,35054929]
Вес моих перцептронов:
[-0,5 -0,29850122 0,35054929]

Веса из модели scikit-learn идентичны нашим весам.Это означает, что наша модель работает правильно, и это отличная новость.

Прежде чем мы подведем итоги, нужно остановиться на нескольких незначительных моментах. В модели scikit-learn нам нужно было установить случайное состояние на «None» и выключить перемешивание. Мы уже установили случайное начальное число и перетасовали данные, поэтому нам не нужно было делать это снова.

Нам также пришлось установить скорость обучения «eta0» на 0,1, чтобы она была идентична нашей модели.

Последняя точка - перехват. Так как мы уже включили столбец фиктивных функций с единицами, мы автоматически настраивали перехват, поэтому нам не нужно было включать его в scikit-learn Perceptron.

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

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

Этот последний шаг в процессе, вероятно, самый важный.

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

Описание процесса важно по двум причинам:

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

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

Отличный способ продемонстрировать свою работу - портфолио GitHub Pages.

В этом посте мы узнали, как реализовать Perceptron с нуля.

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

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

Наконец, мы закончили, сравнив результаты нашей модели с надежной реализацией.

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

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

.

Как писать стихи - Уроки творческого письма

Как писать стихи

Вы хотите научиться писать стихи или как стать поэтом? Хотели бы вы получить пошаговый совет, как черпать поэтические идеи и превращать их в стихи?

Вы находитесь в нужном месте! Найдите ответы на эти вопросы:


  • «О чем писать стихи?»
  • "Как мне выбрать правильную форму для моего стихотворения?"
  • «Какие распространенные ошибки делают новые поэты и как их избежать?»
  • «Как написать свободный стих / пустой стих / сонеты / хайку и т. Д.? "

Как писать стихи - Содержание

Определение поэзии . Что такое поэзия и чем она отличается от других видов письма? Вот как CWN отвечает на эти вопросы.

Структура стихотворения . Как стихотворение разделить на строки? («Наугад» - неправильный ответ на этот вопрос!) Здесь вы найдете несколько лучших идей о выборе правильной структуры для вашего стихотворения.

Счетчик поэзии . Что такое поэтический метр и почему вам это нужно.Легкое для понимания руководство по ритмической стороне поэзии.

Схемы рифм . Рифма - важный инструмент в вашем поэтическом наборе. Почему некоторые поэты намеренно выбирают неточные рифмы? Какая схема рифмы лимерика? Узнай здесь!

Как написать стихотворение - Поэтические приемы 1 . Пошаговое руководство по написанию стихов. Советы о том, о чем писать, с чего начать, и как выбрать правильные слова.

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

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

Типы стихов - Как написать сонет . Четкое объяснение формы сонета, плюс стихотворения для написания собственного сонета.

Типы стихов - Как писать: стихотворения-акростихи, пустой стих, сестины . Пояснения к этим типам стихотворений с идеями, которые можно попробовать на себе. Загрузите бесплатный инструмент для поэзии, который поможет вам писать сестины.



Типы стихов - Как написать повествовательную поэму или балладу. . Пояснения и примеры повествовательной поэзии. Советы по написанию собственного повествовательного стихотворения или баллады и подсказки стихов для начала.

Типы стихотворений - Как написать лимерик .Лимерики очень весело читать и писать. У них нет , чтобы испачкать - решать вам. Начни здесь.

Типы стихов - Как написать хайку . Хайку - это форма японской поэзии, которая всего в нескольких словах передает момент. Узнайте, как сохранить собственное понимание и воспоминания, написав хайку.

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

Интервью: Майкл Клам о Poetry Slams . Поэт, учитель и переводчик Майкл Клам рассказал нам о поэзии, поэзии перформанса и литературном переводе.

Интервью: Карл Элдер о языковой поэзии . Карл Элдер предлагает свой взгляд на ограничения языковой поэзии и «эстетику случая».

Интервью: Джесси Карти о повествовательных стихах . Джесси Карти рассказывает о своем поэтическом влиянии и опыте редактора литературного журнала.

Онлайн-курс письма - Основы написания стихов. В этом 8-недельном курсе вы научитесь методам написания сильных стихов.

Как написать стихи для творческого письма Home

.

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