Кромкообрезной станок Тайга К-2 (Россия)
Назначение:
Предназначен для обрезки и продольного раскроя необрезного пиломатериала с целью получения обрезной доски необходимой ширины.Область применения:
Станок предназначен для получения из не обрезного пиломатериала обрезные доски требуемых размеров. Применяется на лесопильных и деревообрабатывающих предприятиях средней мощности.
Производитель: Тайга
Родина бренда: Россия
Техническая характеристика | |
Размеры обрабатываемого материала, мм: |
|
Диаметр дисковых пил, мм |
450 |
Просвет пильной рамки, мм |
85 |
Расстояние между пилами, мм |
|
Частота вращения пильного диска, об/мин |
3000 |
Производительность станка на 50 мм доске, м3/смена |
10 |
Установленная мощность, кВт |
11 |
Габариты, мм |
|
Отзывы о Кромкообрезном станке Тайга К-2
Пока нет отзывов на данный товар.
Оставить свой отзыв
Ваш отзыв поможет другим людям сделать выбор. Спасибо, что делитесь опытом!
В отзывах запрещено:
Использовать нецензурные выражения, оскорбления и угрозы;
Публиковать адреса, телефоны и ссылки содержащие прямую рекламу;
Писать отвлеченные от темы и бессмысленные комментарии.
Информация не касающаяся товара будет удалена.
Балетный хореографический двухрядный станок напольный П3-2
Конструкция данной модели хореографического станка цельносварная, выполнена из нержавеющей стали марки AISI 304 с зеркальной полировкой.
- высота станка 1100мм по верху поручня;
- высота нижнего поручня 800мм по верху поручня;
- диаметр поручня — 50мм;
- размер трубы — 30*30мм;
- толщина крепежной пластины — 3мм;
- площадка крепления -100мм*300мм
Хореографический станок может быть укомплектован деревянными поручнями на выбор: сосна сращенная, цельноламельный бук или дуб, а также максимально надежным поручнем из цельноламельного бука со стальным сердечником.
Поручни из сосны — это эконом вариант, т.к. сосна — мягкая порода дерева, не слишком надежная, не предназначена для постоянных больших нагрузок.
Поручень из сосны клееный методом микрошип («ёлочкой»), состоит из кусочков по 15-20 см, если на место такого стыка дать большую нагрузку, то поручень может сломаться, но для домашнего использования или для детского кружка с маленькими и легкими балеринами — отлично подойдет.
Демократичная цена — ее большое преимущество.
Поручень из бука — оптимальный вариант по цене/качеству. Твердая порода дерева, прочный, гладкий и отшлифованный, цельноламельный. Это значит, что он состоит из двух ламелей (полукружий) склееных между собой только по длине, без поперечных стыков. Такой поручень максимально надежный и выдерживает повышенные нагрузки в течение долгих лет. Мягкий розоватый оттенок помогает создать светлый и теплый интерьер. Но бук нужно беречь от влаги.
Поручень из дуба — также твердая порода дерева, прочный, гладкий и отшлифованный, цельноламельный, с очень красивым ярко выраженным рисунком дерева.
По прочности он равен или превосходит бук. Влажность ему не страшна благодаря особым веществам в древесине. Дубовые перекладины сделают обстановку в зале более благородной и даже роскошной.
Иногда возникают ситуации, когда необходимы поручни длиной более двух метров. Мы делаем поручни длиной 2,5 и 3 метра из бука и дуба.
Если занятия будут очень интенсивными, либо занимающиеся будут большого веса (например, когда станки устанавливают в залы для занятий боевыми искусствами), то у нас имеются поручни
Также у нас имеются поручни из стали, блестящего хромированного цвета.
Рекомендуем также покрывать поручни лаком. Покрытие создает устойчивую к образованию пятен, прочную и износостойкую поверхность. Придаёт поверхности водо – и грязеотталкивающие свойства. С покрытием лаком поручни выглядят эстетически красивее, цвет дерева становится насыщенным, поручни блестят на свету и за ними очень легко ухаживать. Дерево без покрытия впитывает влагу, пот и грязь и со временем темнеет.
Мы наносим лак двумя тонкими слоями, чтобы избежать эффекта прилипания рук к поверхности, который наблюдается при нанесении толстого слоя лака.
Первый слой полностью впитывается в дерево и препятствует дальнейшему впитыванию различных бытовых загрязнений, второй слой наносится для эстетики. Поручни становятся гладкими и блестящими.
Также мы можем покрасить поручень в любой цвет из нашей палитры красок. Самые востребованные цвета — беленый и цвет венге.
Дополнительно вы можете укомплектовать станок боковыми декоративными заглушками.
Если Вам необходимо рассчитать длину станка более 10-ти метров, поручни длиной 2,5 или 3м, поручни с сердечником или, например, угловую конструкцию, позвоните пожалуйста нашим менеджерам по телефонам:
8 800 350 55 18
+7 499 408 71 55
+7 964 649 71 55
или отправьте нам запрос расчета стоимости, в который Вы можете вложить план Вашего помещения, и мы в кратчайший срок пришлем Вам наше коммерческое предложение. Также мы изготавливаем балетные станки по Вашим чертежам.
СВП-2 Станок сверлильно-пазовальный. Паспорт, схемы, описание, характеристики
Сведения о производителе сверлильно-пазовального станка
СВП-2Производителем сверлильно-пазовального станка СВП-2
В СССР Днепропетровский станкостроительный завод специализировался на станках фрезерной группы на протяжении всего своего существования. Однако в мае 1999 года это крупнейшее на Украине производство станков было реструктуризировано, и в результате появилось шесть самостоятельных предприятий, одно из которых — ООО «Станкостроитель».
Станки, выпускаемые Днепропетровскм станкостроительным заводом ДСПО
СВП-2 Станок сверлильно-пазовальный. Назначение, область применения
Вертикальные сверлильно-пазовальные станки СВП-2 (с ручной подачей) и СВА-2 (с механической подачей) предназначены для сверления отверстий и выборки пазов в изделиях из дерева.
Станки СВП-2 являются универсальными и могут быть использованы во всех цехах и мастерских по деревообработке.
Принцип работы и особенности конструкции станка
Сверлильно-пазовальный станок СВП-2 внешне похож на универсальный сверлильный станок 2Н125Л, но конструкция СВП-2 намного проще т.к. его шпиндельная головка не имеет коробки скоростей и коробки подач; шпиндель вращается непосредственно от электродвигателя через ременную передачу.
Шпиндельная головка с приводом установлена на колонне станка неподвижно. Шпиндель установен на подшипниках и заключен в направляющую гильзу, которая перемещается вверх или вниз от педали или рукоятки. Шпиндель имеет только две скорости вращения, которые переключаются обмотками электродвигателя.
Стол станка СВП-2 расположен на горизонтальных направляющих кронштейна и имеет продольную подачу через зубчато-реечный механизм от маховичка. Кронштейн вместе со столом можно переставлять по высоте в соответствии с высотой заготовки маховичком и фиксировать в заданном положении съемной рукояткой.
Кроме того, стол можно повернуть под нужным углом или установить вертикально, если необходимо сверлить отверстие под углом к базовой поверхности детали или в ее кромке. На столе смонтирован эксцентриковый прижим для закрепления заготовки.
Сверлильно-пазовальный вертикальный станок с механической подачей СВА-2 в отличие от станка СВП-2 оснащен пневматическим цилиндром для перемещения гильзы со шпинделем, а также пневмоприжимами.
СВП-2 Общий вид сверлильно-пазовального станка
Фото сверлильно-пазовального станка СВП-2
Фото сверлильно-пазовального станка СВП-2
Расположение составных частей сверлильно-пазовального станка СВП-2
Расположение составных частей сверлильно-пазовального станка СВП-2
Расположение составных частей сверлильно-пазовального станка СВП-2. Смотреть в увеличенном масштабе
Основные узлы станков СВП-2 и СВА-2
Станок состоит из трех основных частей: основания, колонны со столом, шпинделей головки
- Узел 10. Основание
- Узел 11. Головка
- Узел 20. Стол
- Узел 21. Суппорт
- Узел 30. Шпиндель
- Узел 31. Опора шпиндельная верхняя
- Узел 32. Привод
- Узел. 33. Рычаги управления и тормоз
- Узел 35. Привод подачи (только для СВП-2)
- Узел 40. Прижим (только для СВА-2)
- Узел 41. Прижим пневматический (только для СВА-2)
- Узел 61.Защита инструмента (только для СВП-2)
- Узел 51. Защита инструмента (только для СВА-2)
- Узел 60. Кожух
- Узел 80. Электрооборудование
Органы управления сверлильно-пазовальным станком СВП-2
- Рукоятка перемещения и торможения шпинделя
- Ограничитель хода шпинделя
- Рукоятка зажима эксцентрикового прижима заготовки
- Рукоятка зажима сверлильной головки на колонне
- Рукоятка зажима изделия на СВП-2 и отпуска изделия на СВА-2
- Рукоятка вертикального перемещения стола по колонне
- Рукоятка зажима суппорта
- Рукоятка зажима хобота сверлильной головки
- Рукоятка углового вращения стола
- Педаль перемещения шпинделя на СВП-2. Педаль включения узла механической подачи шпинделя СВА-2
- Переключатель скоростей оборотов двигателя
- Регулятор скорости подачи шпинделя на станке модели СВА-2
- Кнопка «Стоп станка»
- Кнопка «Пуск станка»
- Вводный выключатель
- Маховичок продольной подачи стола
- Ограничительные упоры хода стола
Расположение составных частей сверлильно-пазовального станка СВП-2
Расположение составных частей сверлильно-пазовального станка СВП-2
- Колонна (стойка)
- Маховичок подъема стола
- Электродвигатель
- Ограждение привода станка
- Рукоятка опускания шпинделя
- Шпиндель
- Сверлильный патрон
- Прижим заготовки
- Стол
- Маховичок продольной подачи стола
- Кронштейн стола
- Рукоятка зажима стола на колонне
- Педаль опускания шпинделя
Схема кинематическая сверлильно-пазовального станка СВП-2
Кинематическая cхема сверлильно-пазовального станка СВП-2
Схема кинематическая сверлильно-пазовального станка СВП-2. Смотреть в увеличенном масштабе
Кинематическая cхема сверлильно-пазовального станка СВА-2
Схема кинематическая сверлильно-пазовального станка СВА-2. Смотреть в увеличенном масштабе
Кинематические цепи станка осуществляют следующие движения:
Описание сверлильно-пазовального станка СВП-2
Шпиндель сверлильно-пазовального станка СВП-2
Основание станка
Основание — чугунная отливка, в которой смонтирована колонна. Внутри основания находится ось, на которой размещена педаль ножной подачи шпинделя.
В задней части основания, в нише, установлен вводный выключатель.
Колонна и стол
Внутри колонны размещена тяга, соединяющая рычаг педали с рычагом перемещения шпинделя в головке.
На тяге смонтирована пружина, предназначенная для возврата шпинделя в исходное положение.
По наружной части колонны с помощью рукоятки, через передачу червяк — шестерня — рейка, перемещается суппорт. Суппорт может поворачиваться вокруг колонны на 360° и фиксироваться по высоте в требуемом для работы положении.
В суппорте размещен кронштейн, на котором закреплены салазки, по направляющим которых с помощью маховичка и пары шестерня — рейка перемещается стол.
Кронштейн вместе с салазками и столом может поворачиваться в обе стороны на 90° вокруг горизонтальной оси с помощью рукоятки и червячной передачи и фиксироваться зажимным винтом.
На столе установлена, упорная линейка и прижим: для станков СВП-2 — эксцентриковый, а для станков СВА-2 пневматический.
Сверлильная головка
Головка — литой чугунный корпус, укрепленный на колонне. Внутри головки размещены: гильза со шпинделем (см. фиг. 7). верхняя опора шпинделя, рычаги управления шпинделем и ограничитель хода шпинделя.
В средней части головки расположена ниша, внутри которой смонтирована электроаппаратура. Ниша закрывается дверкой, на которой размещен пульт управления. С правой стороны головки находится рукоятка, связанная с осью рычагов управления, предназначенная для перемещения шпинделя от руки вниз и его торможения при повороте рукоятки вверх.
Рукоятка при опускании шпинделя ножной педалью фиксируется при помощи шарикового замка.
Над головкой размещен привод шпинделя, который состоит из плиты и электродвигателя, осуществляющего вращение шпинделя через клиноременную передачу.
Для осуществления необходимого натяжения ремни плита с электродвигателем перемещается по направляющим с помощью винта и гайки.
Клиноременная передача закрывается кожухом. Станки СВП-2 и СВА-2 имеют защитное ограждение режущего инструмента.
Привод механической подачи (на станке СВА-2)
Узел привода подачи служит для механической подачи шпинделя в процессе сверления. Он состоит из основания, смонтированного на нем пневмоцилиндра и пневмоаппаратуры.
Для возможности плавного перемещения поршня и регулировки скорости подачи осуществлена схема подключения пневмоцилиндра с постоянным противодавлением. Для этого нижняя (штоковая) полость цилиндра имеет постоянное соединение с пневмосетью, а верхняя полость цилиндра — с распределительным краном.
Распределительный кран направляет воздух в верхнюю полость цилиндра во время рабочего хода поршня и изменения скорости подачи шпинделя в зависимости от переменного сечения пропускного отверстия крана.
Установка определенного сечения пропускного отверстия осуществляется маховичком через винт-ограничитель.
Поворот распределительного крана для включения подачи производится педалью через рычаг, а возврат крана в исходное положение — пружиной.
Электрооборудование станков
Электрооборудование состоит из:
- Электродвигателя привода шпинделя Д
- Пусковой и защитной электроаппаратуры
- Местного освещения.
Описание действия электросхемы
Электрическая схема сверлильно-пазовального станка СВП-2
Схема электрическая сверлильно-пазовального станка СВП-2. Смотреть в увеличенном масштабе
- Поворотом вводного выключателя ВВ напряжение подается на рабочую цепь и цепь управления
- Нажатием на кнопку «Пуск» 2КУ производится включение электродвигателя Д
- Остановка станков осуществляется нажатием на кнопку «Стоп» 1КУ
- Выбор скорости вращения электродвигателя осуществляется барабанным переключателем БП
- На СВА-2 в цепи управления стоят н. о. контакты конечного выключателя зашиты.
Защита
- Защита от токов короткого замыкания осуществляется предохранителями
- Защита от перегрузки — тепловыми реле
- Нулевая защита — катушкой пускателя
Первоначальный пуск станков
После подключении к сети станков необходимо проверить на холостом ходу следующее:
- Плавность перемещения гильзы шпинделя
- Вращение электродвигателя. (Вал должен вращаться по часовой стрелке).
После проверки на холостом ходу станки настраиваются и налаживаются для работы.
Наладка и настройка станков
- Установить ограничитель хода 2 гильзы шпинделя (см. фиг. 5 и 5а) на необходимую глубину сверления или пазования отверстий
- Установить стол по высоте. Для этого необходимо отпустить зажим 7 суппорта и с помощью рукоятки 6 переместить стол
- Для сверления отверстий под углом ±90° к горизонтальной плоскости необходимо отпустить зажим 8 хобота и, поворачивая его съемной рукояткой 9, выставить по угловой шкале
- При пазовании отверстий отпустить клин-планку, заклинивающую стол. Подача стола осуществляется маховиком 16. В соответствии с длиной паза устанавливаются два ограничительных упора 17
- Величина подачи на станке модели СВА-2 устанавливается регулятором скорости 12.
При увеличении подачи вращать по часовой стрелке, при уменьшении — против.
Указания по эксплуатации станков
Все работы на станке необходимо производить в строгом соответствии с «Правилами техники безопасности и производственной санитарии в деревообрабатывающей промышленности».
Для удобства обслуживания станка, в связи с высоким расположением педали, рекомендуется, в необходимых случаях, производить работы с соответствующих надежных подставок.
В комплект станка входит патрон П-2 d (3-15) ГОСТ 8522-57, который обеспечивает надежное крепление, инструмента с диаметром хвостовиков в диапазоне 3..15 мм.
Для выполнения дереворежущего инструмента с большим диаметром хвостовика необходимо применение специального патрона.
Читайте также: Производители деревообрабатывающих станков и оборудования
СВП-2 Станок сверлильно-пазовальный. Видеоролик
Технические характеристики сверлильно-пазовального станка СВП-2
Наименование параметра | СВПГ | СВП-2 | СВА-2 |
---|---|---|---|
Основные параметры | |||
Наибольшая толщина обрабатываемой заготовки, мм | 125 | ||
Наибольший диаметр высверливаемого отверстия (фрезеруемого паза), мм | 30 | 40 | 40 |
Наибольшая глубина высверливаемого отверстия (фрезеруемого паза), мм | 90 | 100 | 100 |
Наибольшая длина фрезеруемого паза, мм | 125 | 200 | 200 |
Наибольшее расстояние от оси шпинделя до стола, мм | 10..120 | 400 | 400 |
Количество шпинделей, шт | 2 | 1 | 1 |
Ход шпинделя, мм | — | 110 | 110 |
Подача шпинделя ручная | — | есть | есть |
Подача шпинделя от педали | — | есть | есть |
Подача шпинделя механическая, м/мин | — | нет | 0..6 |
Торможение шпинделя | ручн | ручн | |
Поворот стола вокруг горизонтальной оси, град | ±25° | ±90° | ±90° |
Поворот стола вокруг вертикальной оси, град | 360° | 360° | |
Наибольшее вертикальное перемещение стола по колонне, мм | — | 400 | 400 |
Наибольшее горизонтальное перемещение стола по направляющим суппорта, мм | 200 | 200 | |
Наибольшая скорость подачи стола, м/мин | 3 | — | — |
Величина подачи стола, мм | 30..110 | ||
Наибольшее число двойных ходов шпинделя в 1 минуту | 140 | ||
Частота вращения шпинделя, об/мин | 3000, 6000 | 3000, 6000 | 3000, 6000 |
Наименьший цикл обработки одного паза, с | 8000; 12000 | ||
Наибольший расход сжатого воздуха, м³/час | 1 | ||
Рабочее давление воздуха, МПа | 0,4..0,6 | — | 3 атм |
Электрооборудование станка | |||
Род тока питающей сети | 380В 50Гц | 380В 50Гц | 380В 50Гц |
Количество электродвигателей на станке, шт | 1 | 1 | 1 |
Электродвигатель привода фрезы, кВт | 1,5 / 2,0 | 1,7 / 2,2 | 1,7 / 2,2 |
Габарит и масса станка | |||
Габарит станка (длина х ширина х высота), мм | 1496 х 724 х 1115 | 650 х 1240 х 1775 | 955 х 1240 х 1775 |
Масса станка, кг | 525 | 450 | 520 |
- Вертикальный сверлильно-пазовальный станок СВП-2. Вертикальный сверлильно-пазовальный станок СВА-2. Руководство к станкам, 1969
- Амалицкий В.В. Деревообрабатывающие станки и инструменты, 2002
- Афанасьев А.Ф. Резьба по дереву, Техника, Инструменты, Изделия, 2014
- Бобиков П.Д. Мебель своими руками, 2004
- Борисов И.Б. Обработка дерева, 1999
- Джексон А., Дэй Д. Библия работ по дереву, 2015
- Золотая книга работ по дереву для владельца загородного участка, 2015
- Ильяев М.Д. Резьба по дереву, Уроки мастера, 2015
- Комаров Г.А. Четырехсторонние продольно-фрезерные станки для обработки древесины, 1983
- Кондратьев Ю.Н., Питухин А.В… Технология изделий из древесины, Конструирование изделий и расчет материалов, 2014
- Коротков В. И. Деревообрабатывающие станки, 2007
- Лявданская О.А., Любчич В.А., Бастаева Г.Т. Основы деревообработки, 2011
- Любченко В.И. Рейсмусовые станки для обработки древесины, 1983
- Манжос Ф.М. Дереворежущие станки, 1974
- Расев А.И., Косарин А.А. Гидротермическая обработка и консервирование древесины, учебное пособие, 2010
- Рыженко В.И. Полная энциклопедия художественных работ по дереву, 2010
- Рыкунин С.Н., Кандалина Л.Н. Технология деревообработки, 2005
- Симонов М.Н., Торговников Г.И. Окорочные станки, 1990
- Соловьев А.А., Коротков В.И. Наладка деревообрабатывающего оборудования, 1987
- Суханов В.Г. Круглопильные станки для распиловки древесины, 1984
- Фокин С.В., Шпортько О.Н. Деревообработка, Технологии и оборудование, 2017
- Хилтон Билл Работы по дереву, Полное руководство по изготовлению стильной мебели для дома, 2017
Список литературы:
Связанные ссылки. Дополнительная информация
Круглопильный станок Ц6-2 (К) — цена, отзывы, характеристики с фото, инструкция, видео
Модель Ц62: универсальный агрегат для обработки древесных материалов
В частных мастерских, а также в производственных цехах востребованы универсальные круглопильные станки . Такое оборудование имеет хороший функционал, оно подходит для работы с древесными пиломатериалами, которые имеют значительную длину и ширину. Одним их самых популярных на рынке является станок круглопильный Ц6-2. Его целесообразно применять при работе с:
- брусками;
- досками;
- плитными, а также листовыми материалами.
Он способен выполнять продольную, а также поперечную распиловку. Также его можно использовать для разреза материалов под углом, диапазон составляет от 45 до 90 градусов.
Круглопильный станок: характеристики и ключевые достоинства
Круглопильный станок Ц6 отличает удобство эксплуатации. Это обусловлено тем, что он:
- имеет рабочий стол, выполненный из чугуна. Его отличает долговечность и высокий уровень надежности. На нем присутствует специальная направляющая линейка, которая имеет прочную конструкцию;
- имеет когтевую защиту, которая исключает вероятность обратного выброса обрабатываемого изделия. Именно благодаря этому круглопильному станку Ц6 характерна высокая степень безопасности;
- в конструкции есть подмоторная плита. Она располагается внутри станины. На ней находится суппорт с двигателем, а также устройство, которое обеспечивает регулировку уровня выступания диска по отношению к плоскости рабочей поверхности;
- данный универсальный круглопильный станок укомплектован торцовочной кареткой, которая имеет увеличенный ход. Именно благодаря этому становится возможным распил изделий под заданным углом, а также по направлению вдоль волокон;
- габариты каретки обеспечивают возможность торцевания и установки деталей, которые имеют значительную длину. Например, это могут быть бруски или доски;
- станина имеет жесткую; конструкцию, она является сварной. Ей характерна коробчатая форма.
Вся конструкция этого станка произведена из высоконадежных жестких сплавов. Ввиду этого гарантирован минимальный износ ходовой части, а также длительный эксплуатационный период оборудования.
Основные технические характеристики модели
Станок круглопильный Ц6-2 благодаря своему функционалу и техническим параметрам идеально подходит для оснащения небольших деревообрабатывающих цехов, которые специализируются на изготовлении мебели и столярной продукции. У данной модификации круглопильного станка характеристики следующие:
- допустимая ширина обрабатываемого изделия достигает 40 сантиметров;
- толщина при продольном резе может составлять до 10 сантиметров, а при поперечном до 13 сантиметров;
- минимальный диаметр пилы равен 32 сантиметрам, а максимальный достигает 50 сантиметров;
- период торможения пилы составляет не больше 6 секунд;
- потребляемая мощность равна 4000 Вт;
- мощность электромотора достигает 4 кВт.
Вес данной модели составляет 650 килограммов, поэтому она подходит для стационарного размещения.
Характеристика | Ц6-2(К) |
---|---|
Наибольшая ширина отпиливаемого материала при базировании материала на столе станка по направляющей линейке, мм. | 500 |
Наибольшая ширина отпиливаемого материала при базировании материала на подвижной каретке по направляющей линейке, мм. | 600 |
Наибольшая толщина распиливаемого материала, мм. | 120 |
Наибольший диаметр пилы / диаметр посадочного отверстия, мм. | 400/50 |
Номинальная частота вращения режущего инструмента, об/мин. | 2860 |
Номинальные размеры рабочей поверхности стола станка, длина х ширина, мм: | 1115х900 |
Номинальные размеры рабочей поверхности стола подвижной каретки, длина х ширина, мм: | 590х530 |
Наибольший ход каретки, мм. | 1110 |
Уровень рабочей поверхности стола от пола, не менее, мм. | 790 |
Количество электродвигателей на станке, шт. | 1 |
Мощность электродвигателя, кВт. | 4 |
Синхронная частота вращения электродвигателя, об/мин. | 3000 |
Расход воздуха не менее, м3/ч; | 1000 |
Скорость воздуха в выходном патрубке, м/с; | 20 |
Коэффициент аэродинамического сопротивления | 3 |
Габаритные размеры станка, (длина х ширина х высота), мм: | 1790х1900х1240 |
Масса Ц6-2 (К) станка, кг. | 450 |
Характеристика | Значение |
---|---|
Максимальный диаметр торцевой фрезы, мм | 76 |
Максимальный диаметр концевой фрезы, мм | 25 |
Максимальный диаметр рассверливания в стали, мм | 24 |
Максимальный диаметр сверления в стали, мм | 20 |
Напряжение питания, В | 400 |
Вылет оси горизонтального шпинделя, мм | 15-415 |
Длина стола, мм | 230 |
Ширина стола, мм | 1246 |
Максимальное расстояние шпиндель-стол, мм | 405 |
Размер Т-образных пазов стола, мм | 16 |
Количество Т-образных пазов стола | 3 |
Расстояние между Т-образными пазами, мм | 63 |
Максимальная грузоподъемность, кг | 200 |
Выходная мощность привода (главный двигатель), кВт | 2.2 |
Стандарт | DIN EN 55011 |
Уровень ЭМС | A |
Ручное перемещение по оси X, мм | 690 |
Ручное перемещение по оси Y, мм | 310 |
Ручное перемещение по оси Z, мм | 390 |
Автоматическое перемещение по оси X, мм | 610 |
Автоматическое перемещение по оси Y, мм | 230 |
Автоматическое перемещение по оси Z, мм | 310 |
Вылет оси шпинделя, мм | 15-415 |
Патрон шпинделя | ISO 40 DIN 2080 |
Диапазон скоростей шпинделя, об/мин | 60 — 4200 |
Количество скоростей шпинделя | 2 |
Тип подачи пиноли | механический бесступенчатый |
Диапазон поворота фрезерной головки по Z — X плоскости, ° | 45 |
Диаметр пиноли, мм | 86 |
Ход пиноли, мм | 127 |
Диапазон автоподачи шпинделя, мм/об | 0.04 / 0.08 / 0.15 |
Ход фрезерной головки по оси Z, мм | 312 |
Длина, мм | 2000 |
Ширина/глубина, мм | 1600 |
Высота, мм | 2010 |
Вес (ориентировочный), кг | 1000 |
Деревообрабатывающие станки и оборудование от компании ЛТТ
Наша организация имеет многолетний опыт работы в сфере снабжения предприятий лесной промышленности, а также компаний, которые специализируются на выпуске пиломатериалов для мебельного дела и строительных работ. Активное сотрудничество с ведущими фирмами-изготовителями техники для деревообработки помогает формировать богатый и разнообразный ассортимент станков и инструмента, незаменимых для легкой и результативной обработки лесозаготовок.
Наша организация – это коллектив профессионалов, которые ценят доверие каждого клиента и уделяют максимум внимания любому заказу. Обратившись к нам, вы получите консультацию компетентного специалиста, который сориентирует вас в ряду продукции «ЛТТ» и поможет подобрать технику.
Деревообрабатывающие станки в нашем каталоге – это десятки разных модификаций оборудования, среди которых можно найти компактные и простые агрегаты, а также мощные, полностью автоматизированные линии для крупного производства. Взаимодействие с производителями оснащения – залог того, что у нас вы сможете заказать современную, продуктивную в работе технику.
Мы поможем подобрать технику для:
Помимо оборудования для деревообработки и мебельной промышленности, мы рады предложить покупателям практичный инструмент для заточки режущих элементов станков и пилорам, а также обширный ряд запчастей и комплектующих для ремонта и обновления техники. Комплексный подход к решению задач клиента обеспечивает снабжение вашего предприятия всем необходимым для слаженной работы.
Чтобы выбрать и заказать станок, пилу или шлифовальную машину в нашей компании, оставьте заявку на сайте или позвоните: консультанты ООО «ЛТТ» оперативно свяжутся с вами для уточнения деталей заказа и отправки оборудования по России. Наша компания работает в Новосибирске, откуда вы можете самостоятельно забрать приобретенные товары.
Станок 2П-3,2, 220В, 380В, цена, фото
описание
Станок 2П-3,2 используется для производства натяжных потолков. Наиболее популярная модель оборудования, благодаря оптимальному сочетанию цены и производительности.
Описание:
- Электропитание станка: 220V, 380V, 50HZ
- Мощность: 4 KW
- Пневматический привод
- Параметры рабочего стола: 380 х 700 мм
- Область сваривания: 13000 мм2
- Опции: защита от перегрузки, от пробоя
- Высокая производительность
- Помехоподавление: на частотах 27.12MHZ, 30.56MHZ, 40.68MHZ, согласно Международному Стандарту, низкое воздействие на внешнее оборудование
Использование станка
Кроме изготовления натяжных потолков, применяется для вакуум-формованной упаковки для декоративного оформления в салоне автомобиля, торговых марок, ярлыков, почтовых курьерских конвертов, дождевых плащей, надувных игрушек и подушек, пластиковых накидок, обувной продукции, различных упаковочных сумок, мягких пакетов и т.д.
Может использоваться для получения под давлением различных выпукло-вогнутых форм, нанесение цветных узоров и текстов.
Технические характеристики | Единицы измерения | |
Габариты | м | 1,05х1,60х1,45 |
Объем | м3 | 3,4 |
Брутто вес | кг | 240 |
Нетто вес | кг | 190 |
Размер нижней плиты | мм | 380х700 |
Размер верхней плиты (крестовины) | мм | 150х260 |
Расстояние между центром плиты и корпусом стойки | мм | 200 |
Рабочий ход | мм | 50 |
Расстояние от нижней до верхней плиты (крестовины) | мм | 140 |
Частота | МГц | 27,12 |
Электропитание | 220 В 50 Гц | |
Потребляемая мощность | кВА | 6 |
Средства контроля | амперметр, вольтметр | |
Расход воздуха за такт на одном столе | м3 | 0,002 |
Давление воздуха | Мра | 0,6 |
Средства очистки воздуха | нет | |
Концентрированная свариваемая поверхность, max | мм2 | 13000 |
Регулировка времени сварки | есть | |
Регулировка времени задержки (остывания) | нет | |
Регулировка времени опускания | нет | |
Регулировка времени поднятия | нет | |
Регулировка уровня мощности | есть | |
Регулировка давления воздуха | есть | |
Регулировка входного напряжения | есть | |
Подогрев плиты | есть | |
Отключение блока защиты (ручной режим) | есть | |
Генераторная лампа пр-во Китай | DB 948, FU948F | |
Генераторная лампа аналог Россия | Е3062С |
1.2 Машина (1 левая стрелка 2)
Посмотрите, как Золотая рыбка, Робин и их друзья, «Когда молодые умы сталкиваются», также демонстрируют работу этой машины: Kids Explain Math For Kids и Mâquinas de 1 <–2 (испанский).
Хорошо. Это неправда.
Когда я был ребенком, я изобрел машину — неправда — и эта машина — не что иное, как ряд ящиков, простирающихся влево настолько далеко, насколько я мог когда-либо желать.
Я дал этой своей машине имя. Я назвал это «машиной два-один», написав и прочитав смешно задом наперед. (В детстве я не знала другого.)
А что ты с этой машиной делаешь? Вы ставите точки. Точки всегда помещаются в крайнее правое поле.
Ставим одну точку, и ничего не происходит: она остается одной точкой. Хмм!
Но поставьте вторую точку — всегда в крайнем правом поле — и тогда произойдет что-то интересное.
Когда в коробке появляются две точки, они взрываются и исчезают — КАПОВ! — заменить на одну точку, на один квадрат слева.
(Теперь вы понимаете, почему я назвал это «машиной», написанной таким забавным образом?)
Мы видим, что две точки, помещенные в машину, дают одну точку, за которой следуют ноль точек.
Добавление третьей точки — всегда крайнего правого поля — дает изображению одну точку, за которой следует одна точка.
Я понял, что эта машина, в моем неправдивом рассказе, давала коды для чисел.
Только одна точка, помещенная в машину, осталась как одна точка. Предположим, что машинный код \ (1 \ leftarrow2 \) для числа один равен \ (1 \).
Две точки, помещенные в машину одну за другой, дают одну точку в прямоугольнике, за которой следуют ноль точек. Предположим, что машинный код \ (1 \ leftarrow2 \) для числа два равен \ (10 \).
Если поставить третью точку в машине, получится код \ (11 \) для трех.
Что такое машинный код \ (1 \ leftarrow2 \) для четырех?
Вставить четвертую точку в машину особенно интересно: нас ждут множественные взрывы!
Код \ (1 \ leftarrow2 \) для четырех — \ (100 \).
Какой будет код на пятерку? Вы видите \ (101 \)?
А код на шестерку? Добавление еще одной точки к коду для пяти дает \ (110 \) для шести.
На самом деле, мы также можем получить этот код для шести, очистив машину и вставив сразу шесть точек. Пары точек по очереди взорвутся, и каждая даст по одной точке, расположенной слева от них.
Вот одна из возможных серий взрывов. Звуковые эффекты опущены!
Получаете ли вы тот же окончательный код \ (110 \), если выполняете взрывы в другом порядке? (Попробуйте!)
ВОПРОСЫ ПО ПРАКТИКЕ
Вот несколько вопросов, которые вы можете или не хотите задавать.Мои решения для них представлены в последнем разделе этого опыта.
1 a) Какой машинный код \ (1 \ leftarrow2 \) для числа тринадцать? (Оказывается, \ (1101 \). Вы можете получить этот ответ?)
б) Какой код для пятидесяти в этой машине? (Ого!)
2 Может ли число когда-либо иметь код \ (100211 \) в машине \ (1 \ leftarrow2 \), предполагая, что мы всегда выбираем расчленять точки, если можем?
3 Какой номер имеет код \ (10011 \) в машине \ (1 \ leftarrow2 \)?
Можно часами весело провести время, играя с кодами в машине \ (1 \ leftarrow2 \).
Но однажды у меня случилась поразительная вспышка озарения!
ИСПАНСКАЯ ВЕРСИЯ (ВЫХОДИТ!)
Посмотрите, как Золотая рыбка, Робин и их друзья, «Когда молодые умы сталкиваются», также демонстрируют работу этой машины: Kids Explain Math For Kids и Mâquinas de 1 <–2 (испанский).Хорошо. Это неправда.
Когда я был ребенком, я изобрел машину — неправда — и эта машина — не что иное, как ряд ящиков, простирающихся влево настолько далеко, насколько я мог когда-либо желать.
Я дал этой своей машине имя. Я назвал это «машиной два-один», написав и прочитав смешно задом наперед. (В детстве я не знала другого.)
А что ты с этой машиной делаешь? Вы ставите точки. Точки всегда помещаются в крайнее правое поле.
Ставим одну точку, и ничего не происходит: она остается одной точкой. Хмм!
Но поставьте вторую точку — всегда в крайнем правом поле — и тогда произойдет что-то интересное.
Когда в коробке появляются две точки, они взрываются и исчезают — КАПОВ! — заменить на одну точку, на один квадрат слева.
(Теперь вы понимаете, почему я назвал это «машиной», написанной таким забавным образом?)
Мы видим, что две точки, помещенные в машину, дают одну точку, за которой следуют ноль точек.
Добавление третьей точки — всегда крайнего правого поля — дает изображению одну точку, за которой следует одна точка.
Я понял, что эта машина, в моем неправдивом рассказе, давала коды для чисел.
Только одна точка, помещенная в машину, осталась как одна точка. Предположим, что машинный код \ (1 \ leftarrow2 \) для числа один равен \ (1 \).
Две точки, помещенные в машину одну за другой, дают одну точку в прямоугольнике, за которой следуют ноль точек. Предположим, что машинный код \ (1 \ leftarrow2 \) для числа два равен \ (10 \).
Если поставить третью точку в машине, получится код \ (11 \) для трех.
Что такое машинный код \ (1 \ leftarrow2 \) для четырех?
Вставить четвертую точку в машину особенно интересно: нас ждут множественные взрывы!
Код \ (1 \ leftarrow2 \) для четырех — \ (100 \).
Какой будет код на пятерку? Вы видите \ (101 \)?
А код на шестерку? Добавление еще одной точки к коду для пяти дает \ (110 \) для шести.
На самом деле, мы также можем получить этот код для шести, очистив машину и вставив сразу шесть точек. Пары точек по очереди взорвутся, и каждая даст по одной точке, расположенной слева от них.
Вот одна из возможных серий взрывов. Звуковые эффекты опущены!
Получаете ли вы тот же окончательный код \ (110 \), если выполняете взрывы в другом порядке? (Попробуйте!)
ВОПРОСЫ ПО ПРАКТИКЕ
Вот несколько вопросов, которые вы можете или не хотите задавать.Мои решения для них представлены в последнем разделе этого опыта.
1 a) Какой машинный код \ (1 \ leftarrow2 \) для числа тринадцать? (Оказывается, \ (1101 \). Вы можете получить этот ответ?)
б) Какой код для пятидесяти в этой машине? (Ого!)
2 Может ли число когда-либо иметь код \ (100211 \) в машине \ (1 \ leftarrow2 \), предполагая, что мы всегда выбираем расчленять точки, если можем?
3 Какой номер имеет код \ (10011 \) в машине \ (1 \ leftarrow2 \)?
Можно часами весело провести время, играя с кодами в машине \ (1 \ leftarrow2 \).
Но однажды у меня случилась поразительная вспышка озарения!
ВЕРСИЯ SWAHILI (ВЫХОДИТ!)
Посмотрите, как Золотая рыбка, Робин и их друзья, «Когда молодые умы сталкиваются», также демонстрируют работу этой машины: Kids Explain Math For Kids и Mâquinas de 1 <–2 (испанский).Хорошо. Это неправда.
Когда я был ребенком, я изобрел машину — неправда — и эта машина — не что иное, как ряд ящиков, простирающихся влево настолько далеко, насколько я мог когда-либо желать.
Я дал этой своей машине имя. Я назвал это «машиной два-один», написав и прочитав смешно задом наперед. (В детстве я не знала другого.)
А что ты с этой машиной делаешь? Вы ставите точки. Точки всегда помещаются в крайнее правое поле.
Ставим одну точку, и ничего не происходит: она остается одной точкой. Хмм!
Но поставьте вторую точку — всегда в крайнем правом поле — и тогда произойдет что-то интересное.
Когда в коробке появляются две точки, они взрываются и исчезают — КАПОВ! — заменить на одну точку, на один квадрат слева.
(Теперь вы понимаете, почему я назвал это «машиной», написанной таким забавным образом?)
Мы видим, что две точки, помещенные в машину, дают одну точку, за которой следуют ноль точек.
Добавление третьей точки — всегда крайнего правого поля — дает изображению одну точку, за которой следует одна точка.
Я понял, что эта машина, в моем неправдивом рассказе, давала коды для чисел.
Только одна точка, помещенная в машину, осталась как одна точка. Предположим, что машинный код \ (1 \ leftarrow2 \) для числа один равен \ (1 \).
Две точки, помещенные в машину одну за другой, дают одну точку в прямоугольнике, за которой следуют ноль точек. Предположим, что машинный код \ (1 \ leftarrow2 \) для числа два равен \ (10 \).
Если поставить третью точку в машине, получится код \ (11 \) для трех.
Что такое машинный код \ (1 \ leftarrow2 \) для четырех?
Вставить четвертую точку в машину особенно интересно: нас ждут множественные взрывы!
Код \ (1 \ leftarrow2 \) для четырех — \ (100 \).
Какой будет код на пятерку? Вы видите \ (101 \)?
А код на шестерку? Добавление еще одной точки к коду для пяти дает \ (110 \) для шести.
На самом деле, мы также можем получить этот код для шести, очистив машину и вставив сразу шесть точек. Пары точек по очереди взорвутся, и каждая даст по одной точке, расположенной слева от них.
Вот одна из возможных серий взрывов. Звуковые эффекты опущены!
Получаете ли вы тот же окончательный код \ (110 \), если выполняете взрывы в другом порядке? (Попробуйте!)
ВОПРОСЫ ПО ПРАКТИКЕ
Вот несколько вопросов, которые вы можете или не хотите задавать.Мои решения для них представлены в последнем разделе этого опыта.
1 a) Какой машинный код \ (1 \ leftarrow2 \) для числа тринадцать? (Оказывается, \ (1101 \). Вы можете получить этот ответ?)
б) Какой код для пятидесяти в этой машине? (Ого!)
2 Может ли число когда-либо иметь код \ (100211 \) в машине \ (1 \ leftarrow2 \), предполагая, что мы всегда выбираем расчленять точки, если можем?
3 Какой номер имеет код \ (10011 \) в машине \ (1 \ leftarrow2 \)?
Можно часами весело провести время, играя с кодами в машине \ (1 \ leftarrow2 \).
Но однажды у меня случилась поразительная вспышка озарения!
Присоединяйтесь к обсуждению в Facebook и Twitter и любезно поделитесь этой страницей с помощью кнопок ниже.2.2 Объяснение машины (1 левая стрелка 2)
Посмотрите, как Золотая рыбка, Робин и друзья, «Математика на пути», тоже объясняют эти идеи: Дети объясняют математику детям. А вот видео этой команды на испанском языке.
Хорошо.Вернемся к машине \ (1 \ leftarrow 2 \) и разберемся, что делает любопытное устройство. Напомним, что это следует правилу
Когда есть две точки в одном квадрате, они «взрываются», то есть исчезают, и заменяются одной точкой, расположенной слева от них.
И эта машина настроена так, что точки в крайнем правом поле всегда равны единице.
При взрыве две точки в крайнем правом блоке эквивалентны одной точке в следующем блоке слева.И поскольку каждая точка в крайнем правом квадрате стоит \ (1 \), каждая точка на одну позицию выше должна стоить две, то есть \ (2 \).
И две точки во втором квадрате эквивалентны одной точке, находящейся на одно место слева. Такая точка должна стоить два \ (2 \) с, то есть стоить \ (4 \).
И две четверки составляют \ (8 \) вместо точки, которая находится над следующим квадратом.
Вот вопрос, над которым стоит подумать. Помните, что мои ответы на все вопросы приведены в последнем разделе этой главы.
1. Значение точки, расположенной на одну позицию левее, равно \ (16 \). Вы понимаете почему? Каковы значения точек в следующих нескольких ячейках еще левее?
Ранее мы видели, что код тринадцати в машине \ (1 \ leftarrow 2 \) равен \ (1101 \). Теперь мы видим, что это абсолютно правильно: один \ (8 \) и один \ (4 \) и никакие \ (2 \) s и один \ (1 \) действительно составляют тринадцать.
Мы также спросили, какое число имеет код \ (10110 \) в машине \ (1 \ leftarrow 2 \).Теперь мы легко видим, что ответ будет \ (16 + 4 + 2 = 22 \).
Вы видите, что код \ (1 \ leftarrow 2 \) для тридцати — \ (11110 \)?
2. Какой номер имеет код \ (1 \ leftarrow 2 \) \ (100101 \)?
3. Какой код \ (1 \ leftarrow 2 \) для числа двести?
Люди называют коды \ (1 \ leftarrow 2 \) для чисел двоичными представлениями чисел (с префиксом bi- , означающим «два»).Их также называют базовыми двумя представлениями. При записи чисел в двоичном формате используются только два символа \ (0 \) и \ (1 \).
Компьютеры построены на электрических переключателях, которые либо включены, либо выключены. Поэтому в информатике очень естественно кодировать всю арифметику в коде, который использует только два символа: скажем, \ (1 \) для «включено» и \ (0 \) для «выключено». Таким образом, основание два, двоичное, является правильным основанием для использования в информатике.
Присоединяйтесь к обсуждению в Facebook и Twitter и любезно поделитесь этой страницей с помощью кнопок ниже.Frontiers | Машинное обучение и искусственный интеллект: два попутчика в поисках интеллектуального поведения в машинах
1. Большие данные стимулируют интеллектуальное поведение машин
Машинное обучение (ML) и искусственный интеллект (AI) становятся доминирующими методами решения проблем во многих областях исследований и промышленности, не в последнюю очередь из-за недавних успехов в области глубокого обучения (DL). Однако уравнение AI = ML = DL, как недавно предлагалось в новостях, блогах и СМИ, слишком короткое.Эти области разделяют одну и ту же фундаментальную гипотезу: вычисления — полезный способ моделирования интеллектуального поведения машин. Что за вычисления и как их программировать? Это неправильный вопрос. Вычисления не исключают ни поисковые, логические и вероятностные методы, ни методы (глубокого) (неконтролируемого) обучения и обучения с подкреплением, среди прочего, поскольку вычислительные модели включают все из них. Они дополняют друг друга, и следующий прорыв заключается не только в том, чтобы подтолкнуть каждую из них, но и в их сочетании.
Большие данные — это не дань моде. Мир растет экспоненциально, как и объем данных, собираемых по всему миру. Данные становятся более значимыми и контекстно релевантными, открывая новые возможности для машинного обучения (ML), в частности для глубокого обучения (DL) и искусственного интеллекта (AI), перемещая их из исследовательских лабораторий в производство (Jordan and Mitchell, 2015). Проблема сместилась от сбора огромных объемов данных к их пониманию — превращению их в знания, выводы и действия.Различные исследовательские дисциплины, от когнитивных наук до биологии, финансов, физики и социальных наук, а также многие компании считают, что для решения многих их ключевых проблем необходимы «интеллектуальные» решения, основанные на данных. Для создания персонализированной медицины можно использовать высокопроизводительные геномные и протеомные эксперименты. Большие наборы данных поисковых запросов могут использоваться для улучшения поиска информации. Исторические климатические данные можно использовать для понимания глобального потепления и более точного прогнозирования погоды.Большое количество показаний датчиков и гиперспектральных изображений растений можно использовать для определения условий засухи и понимания того, когда и как стресс влияет на рост и развитие растений и, в свою очередь, как противодействовать проблеме мирового голода. Игровые данные могут превращать пиксели в действия в видеоиграх, в то время как данные наблюдений могут помочь роботам понять сложные и неструктурированные среды и научиться манипуляциям.
Однако действительно ли AI, ML и DL являются синонимами, как недавно предлагалось в новостях, блогах и СМИ? Например, когда AlphaGo (Silver et al., 2016) победил южнокорейского мастера Ли Седола в настольной игре Go в 2016 году, термины AI, ML и DL использовались в СМИ для описания победы AlphaGo. В дополнение к этому, даже в списке 10 лучших стратегических тенденций на 2018 год Gartner (Panetta, 2017) помещает (узкий) ИИ на самый верх, определяя его как «состоящий из высокоразвитых решений машинного обучения, нацеленных на конкретную задачу».
2. Искусственный интеллект и машинное обучение
Искусственный интеллект и машинное обучение очень взаимосвязаны.По словам Маккарти (2007), одного из основателей этой области,
AI — это «наука и техника создания интеллектуальных машин, особенно интеллектуальных компьютерных программ. Это связано с аналогичной задачей использования компьютеров для понимания человеческого интеллекта, но ИИ не должен ограничиваться биологически наблюдаемыми методами ».
Это довольно общий характер и включает в себя несколько задач, таких как абстрактное рассуждение и обобщение о мире, решение головоломок, планирование достижения целей, перемещение по миру, распознавание объектов и звуков, говорение, перевод, выполнение социальных или деловых операций, творчество. работа (e.g., создавая произведения искусства или поэзии) и управляя роботами. Более того, поведение машины — это не только результат программы, на него также влияет ее «тело» и среда, в которую она физически встроена. Однако для простоты, если вы можете написать очень умную программу, которая имеет, скажем, человеческое поведение, это может быть ИИ. Но если он не учится автоматически на основе данных, это не ML:
.ML — это наука, которая «занимается вопросом о том, как создавать компьютерные программы, которые автоматически улучшаются с опытом» (Mitchell, 1997).
Итак, AI и ML предназначены для создания интеллектуальных компьютерных программ, и DL, являясь экземпляром ML, не является исключением. Глубокое обучение (LeCun et al., 2015; Goodfellow et al., 2016), которое достигло значительных успехов во многих областях, включая распознавание объектов, распознавание речи и управление, можно рассматривать как построение компьютерных программ, а именно программных уровней абстракции. дифференцируемым образом с использованием многоразовых структур, таких как свертка, объединение в пул, автокодировщики, сети вариационного вывода и т. д.Другими словами, мы заменяем сложность написания алгоритмов, которые охватывают все возможные варианты, сложностью поиска правильной общей схемы алгоритмов — например, в форме глубокой нейронной сети — и обработки данных. В силу универсальности нейронных сетей — они являются приближениями общих функций — их обучение требует больших объемов данных и обычно требует больших размеченных обучающих наборов. В то время как тестовые наборы обучающих программ для распознавания объектов хранят сотни или тысячи примеров для каждой метки класса, для многих приложений ИИ создание помеченных обучающих данных является наиболее трудоемкой и дорогостоящей частью DL.Чтобы научиться играть в видеоигры, могут потребоваться сотни часов опыта и / или очень дорогие вычислительные мощности. Напротив, написание алгоритма искусственного интеллекта, который охватывает все возможные варианты решения задачи, например, рассуждения о данных и знаниях, чтобы автоматически пометить данные (Ratner et al., 2016; Roth, 2017) и, в свою очередь, сделать, например, DL менее требователен к данным — это большая ручная работа, но мы знаем, что алгоритм делает по дизайну, и что он может изучать, и что ему легче понять сложность решаемой проблемы.Когда машине приходится взаимодействовать с человеком, это кажется особенно ценным.
Это показывает, что машинное обучение и искусственный интеллект действительно похожи, но не совсем одинаковы. Искусственный интеллект — это решение проблем, рассуждение и обучение в целом. Машинное обучение — это именно обучение — обучение на примерах, определениях, рассказах и поведении. Самый простой способ представить их отношения — это визуализировать их в виде концентрических кругов, в которых сначала ИИ, а внутри ML (с DL, подходящим внутри обоих), поскольку ML также требует написания алгоритмов, охватывающих все возможные варианты, а именно процесс обучения.Решающим моментом является то, что они разделяют идею использования вычислений в качестве языка интеллектуального поведения. Какие вычисления используются и как их программировать? Это неправильный вопрос. Вычисления не исключают, среди прочего, методов поиска, логического, вероятностного и ограничительного программирования, а также (глубокого) (не) контролируемого и подкрепляющего обучения, но как вычислительная модель содержат все эти методы.
Пересмотр AlphaGo: AlphaGo и его преемник AlphaGo Zero (Silver et al., 2017) сочетают DL и поиск по дереву — ML и AI. В качестве альтернативы следует рассмотреть «Allen AI Science Challenge» (Schoenick et al., 2017). Задача заключалась в том, чтобы понять абзац, в котором говорится о научной проблеме, на уровне средней школы, а затем ответить на вопрос с несколькими вариантами ответов. Все модели-победители использовали ML, но не прошли тест на уровне грамотного среднего школьника. Все победители утверждали, что было ясно, что применение более глубокого, семантического уровня рассуждений с научными знаниями к вопросу и ответам является ключом к достижению истинного интеллекта.Другими словами, ИИ должен охватывать знания, рассуждения и обучение, используя запрограммированные и основанные на обучении запрограммированные модели в сочетании.
3. Совместные поиски интеллектуального поведения машин
Используя вычисления как общий язык, мы прошли долгий путь, но путь впереди еще долгий. Ни одна из современных интеллектуальных машин не может сравниться с человеческим интеллектом по широте и глубине. Во многих реальных приложениях, как показано AlphaGo и Allen AI Science Challenge, неясно, подходит ли постановка задачи к полноценному обучению.Проблема может иметь большой компонент, который лучше всего можно смоделировать с помощью алгоритма ИИ без компонента обучения, но могут быть дополнительные ограничения или недостающие знания, которые выводят проблему за пределы ее режима, и обучение может помочь заполнить пробел. Точно так же запрограммированные знания и рассуждения могут помочь учащимся заполнить пробелы. Существует симметричная разница между ИИ и машинным обучением, а интеллектуальное поведение машин — это совместный квест со множеством обширных и увлекательных открытых исследовательских проблем:
• Как компьютеры могут рассуждать и учиться на сложных данных, таких как мультимодальные данные, графики и неопределенные базы данных?
• Как можно использовать уже существующие знания?
• Как мы можем гарантировать, что обучающие машины удовлетворяют заданным ограничениям и предоставляют определенные гарантии?
• Как компьютеры могут автономно определять наилучшее представление имеющихся данных?
• Как мы организуем различные алгоритмы, включая изученные или неизученные?
• Как мы демократизируем машинное обучение и искусственный интеллект?
• Могут ли полученные результаты быть физически правдоподобными или легко понятными для нас?
• Как заставить компьютеры учиться вместе с нами в цикле?
• Как заставить компьютеры учиться с меньшим объемом помощи и данных, которые мы предоставляем?
• Могут ли они самостоятельно определять оптимальные ограничения и алгоритмы для текущей задачи?
• Как сделать так, чтобы компьютеры узнавали о мире так же быстро, гибко и объяснимо, как люди?
Ответы на эти и другие подобные вопросы сделают реальность мечтой об интеллектуальных и ответственных машинах.Полностью запрограммированные вычисления вместе с программными вычислениями, основанными на обучении, помогут лучше обобщить, помимо конкретных данных, которые мы видели, будет ли новое произношение слова или изображения значительно отличаться от того, что мы видели раньше. Они позволяют нам значительно выйти за рамки контролируемого обучения в сторону случайного и неконтролируемого обучения, которое не так сильно зависит от размеченных данных обучения. Они обеспечивают общую основу для непрерывных, глубоких и символических манипуляций.Они позволяют нам делать выводы из когнитивной науки и других дисциплин машинного обучения и искусственного интеллекта. Они позволяют нам больше сосредоточиться на получении здравого смысла и научных рассуждений, а также обеспечивают четкий путь к демократизации технологии ML-AI, как это было предложено De Raedt et al. (2016) и Корджамшиди и др. (2018). Построение интеллектуальных систем требует опыта в области компьютерных наук и обширных навыков программирования для работы с различными методами машинного мышления и обучения на довольно низком уровне абстракции.Построение интеллектуальных систем также требует обширных исследований методом проб и ошибок для выбора модели, очистки данных, выбора функций и настройки параметров. Фактически отсутствует теоретическое понимание, которое можно было бы использовать для устранения этих тонкостей. Обычные языки программирования и парадигмы программной инженерии также не были разработаны для решения проблем, с которыми сталкиваются практики ИИ и машинного обучения, таких как работа с беспорядочными реальными данными на правильном уровне абстракции и с постоянно меняющимися определениями проблем.Наконец, наука, управляемая данными, — это исследовательская задача. Начиная с прочной основы экспертных знаний в предметной области, соответствующие концепции, а также эвристические модели могут изменяться, и даже определение проблемы, вероятно, будет одновременно изменено в свете новых данных. Интерактивное машинное обучение и искусственный интеллект могут стать основой для новых методов, которые моделируют динамически меняющиеся цели и оперативно используют экспертные знания. Чтобы эксперт в предметной области мог руководить исследованиями на основе данных, процесс прогнозирования дополнительно должен быть достаточно прозрачным.
4. Выводы
Машинное обучение и ИИ дополняют друг друга, и следующий прорыв заключается не только в том, чтобы подтолкнуть каждое из них, но и в их сочетании. Наши алгоритмы должны поддерживать (повторно) обучаемые, (повторно) составляемые модели вычислений и облегчать рассуждение и взаимодействие по отношению к этим моделям на правильном уровне абстракции. Чтобы добиться этих достижений, необходимо сотрудничать во многих дисциплинах и областях исследований. Использование вычислений в качестве общего языка имеет потенциал для развития концепций обучения и вывода информации, которую людям легко и сложно усвоить.
С этой целью в разделе «Машинное обучение и искусственный интеллект» журнала Frontiers in Big Data приветствуются фундаментальные и прикладные статьи, а также исследования репликации по широкому кругу тем, лежащих в основе машинного обучения, искусственного интеллекта и их взаимодействия. Это будет способствовать научному обсуждению причин и следствий достижений, обеспечивая надлежащий взгляд на полученные результаты. Используя общий язык вычислений, мы можем полностью понять, как добиться разумного поведения машин.
Авторские взносы
Автор подтверждает, что является единственным соавтором этой работы, и одобрил ее к публикации.
Заявление о конфликте интересов
Автор заявляет, что исследование проводилось при отсутствии каких-либо коммерческих или финансовых отношений, которые могут быть истолкованы как потенциальный конфликт интересов.
Список литературы
Де Рэдт, Л., Керстинг, К., Натараджан, С., и Пул, Д. (2016). Статистический реляционный искусственный интеллект: логика, вероятность и вычисления.Синтез лекций по искусственному интеллекту и машинному обучению. Сан-Рафаэль, Калифорния: Издательство Morgan & Claypool.
Google Scholar
Гудфеллоу И. Дж., Бенжио Ю. и Курвиль А. К. (2016). Глубокое обучение. Адаптивные вычисления и машинное обучение. Бостон, Массачусетс: MIT Press.
Корджамшиди П., Рот Д. и Керстинг К. (2018). «Системный ИИ: перспектива программирования на основе декларативного обучения», Труды 27-й Международной совместной конференции по искусственному интеллекту и 23-й Европейской конференции по искусственному интеллекту (IJCAI-ECAI), (Стокгольм).
Google Scholar
Митчелл, Т. М. (1997). Машинное обучение. Серия Макгроу Хилл по информатике . Мейденхед: Макгроу-Хилл.
Google Scholar
Ратнер, А. Дж., Са, К. Д., Ву, С., Селсам, Д., и Ре, К. (2016). «Программирование данных: быстрое создание больших обучающих наборов», Annual Conference on Neural Information Processing Systems (NIPS) (Barcelona), 3567–3575.
Google Scholar
Рот, Д. (2017).«Случайный надзор: выход за рамки обучения с учителем», Труды тридцать первой конференции AAAI по искусственному интеллекту (AAAI) (Сан-Франциско, Калифорния), 4885–4890.
Google Scholar
Шёник К., Кларк П., Тафьорд О., Терни П. Д. и Эциони О. (2017). Выходя за рамки теста Тьюринга с помощью Allen AI Science Challenge. Commun. ACM 60, 60–64. DOI: 10.1145 / 3122814
CrossRef Полный текст | Google Scholar
Серебро, Д., Хуанг, А., Мэддисон, К., Гез, А., Сифре, Л., ван ден Дрише, Г. и др. (2016). Освоение игры в го с глубокими нейронными сетями и поиском по дереву. Природа 529, 484–489. DOI: 10.1038 / природа16961
PubMed Аннотация | CrossRef Полный текст | Google Scholar
Сильвер Д., Шритвизер Дж., Симонян К., Антоноглу И., Хуанг А., Гез А. и др. (2017). Освоение игры в го без человеческого знания. Природа 550, 354–359. DOI: 10.1038 / природа24270
PubMed Аннотация | CrossRef Полный текст | Google Scholar
Система на основе машинного обучения для выявления диабета 2 типа с помощью электронных медицинских карт
Задача: Для выявления разнообразных ассоциаций генотип-фенотип, связанных с сахарным диабетом 2 типа (СД2), посредством исследования общегеномных ассоциаций (GWAS) и исследования фенотипических ассоциаций (PheWAS), требуется больше случаев (пациенты с СД2) и контрольной группы (пациенты без СД2). быть идентифицированным (e.g., через Electronic Health Records (EHR)). Однако существующие экспертные алгоритмы идентификации часто страдают низкой скоростью отзыва и могут пропустить большое количество ценных образцов при консервативных стандартах фильтрации. Цель этой работы — разработать полуавтоматическую структуру, основанную на машинном обучении, в качестве пилотного исследования для либерализации критериев фильтрации с целью повышения скорости отзыва при сохранении низкого уровня ложных срабатываний.
Материалы и методы: Мы предлагаем основанную на данных основу для выявления субъектов с СД2 и без него на основе EHR с помощью функциональной инженерии и машинного обучения.Мы оцениваем и сравниваем эффективность идентификации широко используемых моделей машинного обучения в нашей структуре, включая k-ближайших соседей, наивный байесовский метод, дерево решений, случайный лес, машину опорных векторов и логистическую регрессию. Наша структура была проведена на выборках 300 пациентов (161 случай, 60 контрольных и 79 неподтвержденных субъектов), случайным образом отобранных из 23 281 когорты пациентов, связанных с диабетом, полученных из регионального распределенного репозитория EHR в период с 2012 по 2014 год.
Полученные результаты: Мы применяем высокопроизводительные алгоритмы машинного обучения к разработанным функциям.Мы сравниваем точность, прецизионность, AUC, чувствительность и специфичность моделей классификации с современным экспертным алгоритмом для идентификации пациентов с СД2. Наши результаты показывают, что структура достигла высоких показателей идентификации (~ 0,98 в среднем AUC), что намного выше, чем у современного алгоритма (0,71 в AUC).
Обсуждение: Идентификация пациентов с СД2 по электронной записи на основе экспертных алгоритмов часто затруднена из-за большого количества пропущенных из-за их консервативных критериев отбора.Наша структура использует машинное обучение и разработку функций, чтобы ослабить такие критерии выбора и достичь высокого уровня выявления случаев и средств контроля.
Выводы: Предлагаемая нами схема демонстрирует более точный и эффективный подход к выявлению субъектов с СД2 и без него на основе EHR.
Ключевые слова: Сбор данных; Электронные медицинские карты; Функциональная инженерия; Машинное обучение; Сахарный диабет 2 типа.
Начните глубокое обучение с tf.keras
Последнее обновление 27 августа 2020 г.
Прогнозное моделирование с глубоким обучением — это навык, который необходимо знать современным разработчикам.
TensorFlow — это ведущая платформа глубокого обучения с открытым исходным кодом, разработанная и поддерживаемая Google. Хотя использование TensorFlow напрямую может быть сложной задачей, современный API tf.keras обеспечивает простоту и удобство использования Keras для проекта TensorFlow.
Использование tf.keras позволяет проектировать, подбирать, оценивать и использовать модели глубокого обучения, чтобы делать прогнозы всего в нескольких строках кода.Он делает общие задачи глубокого обучения, такие как классификация и прогнозирующее моделирование регрессии, доступными для средних разработчиков, стремящихся к работе.
В этом руководстве вы найдете пошаговое руководство по разработке моделей глубокого обучения в TensorFlow с использованием tf.keras API.
После прохождения этого руководства вы будете знать:
- Разница между Keras и tf.keras, а также способ установки и подтверждения работы TensorFlow.
- 5-ступенчатый жизненный цикл tf.keras и как использовать последовательные и функциональные API.
- Как разработать модели MLP, CNN и RNN с tf.keras для регрессии, классификации и прогнозирования временных рядов.
- Как использовать расширенные функции tf.keras API для проверки и диагностики вашей модели.
- Как повысить производительность вашей модели tf.keras за счет сокращения переобучения и ускорения обучения.
Это большой учебник и очень весело. Вы можете добавить его в закладки.
Примеры маленькие и целенаправленные; вы можете закончить это руководство примерно за 60 минут.
Начните свой проект с моей новой книги «Глубокое обучение с помощью Python», включающей пошаговых руководств и файлов исходного кода Python для всех примеров.
Приступим.
- Обновление июнь / 2020 : Обновлено для изменений API в TensorFlow 2.2.0.
Как разрабатывать модели глубокого обучения с tf.keras
Фото Стивена Харлана, некоторые права защищены.
Обзор учебного пособия TensorFlow
Это руководство разработано, чтобы стать вашим полным введением в tf.keras для вашего проекта глубокого обучения.
Основное внимание уделяется использованию API для решения общих задач разработки моделей глубокого обучения; мы не будем углубляться в математику и теорию глубокого обучения. Для этого я рекомендую начать с этой прекрасной книги.
Лучший способ изучить глубокое обучение на Python — это делать.Погрузитесь. Вы можете вернуться к теории позже.
Я разработал каждый пример кода, чтобы использовать передовые методы и быть автономным, чтобы вы могли копировать и вставлять его прямо в свой проект и адаптировать его к вашим конкретным потребностям. Это даст вам огромное преимущество перед попытками выяснить API только на основе официальной документации.
Это большой учебник, поэтому он разделен на пять частей; их:
- Установите TensorFlow и tf.keras
- Что такое Керас и тф.керас?
- Как установить TensorFlow
- Как подтвердить установку TensorFlow
- Жизненный цикл модели глубокого обучения
- Жизненный цикл 5-ступенчатой модели
- API последовательной модели (простой)
- API функциональной модели (расширенный)
- Как разрабатывать модели глубокого обучения
- Разработка моделей многослойного персептрона
- Разработка моделей сверточной нейронной сети
- Разработка моделей рекуррентных нейронных сетей
- Как использовать расширенные функции модели
- Как визуализировать модель глубокого обучения
- Как построить модельные кривые обучения
- Как сохранить и загрузить вашу модель
- Как повысить производительность модели
- Как уменьшить переобучение с отсевом
- Как ускорить обучение с помощью пакетной нормализации
- Как остановить тренировку в нужное время с помощью ранней остановки
Вы можете проводить глубокое обучение на Python!
Проработайте руководство в удобном для вас темпе.
Вам не нужно понимать все (по крайней мере, прямо сейчас) . Ваша цель — пройти обучение от начала до конца и получить результаты. Необязательно все понимать с первого раза. По ходу дела записывайте свои вопросы. Активно используйте документацию по API, чтобы узнать обо всех функциях, которые вы используете.
Вам не нужно сначала знать математику . Математика — это компактный способ описания работы алгоритмов, в частности инструментов линейной алгебры, вероятности и статистики.Это не единственные инструменты, которые вы можете использовать, чтобы узнать, как работают алгоритмы. Вы также можете использовать код и исследовать поведение алгоритма с различными входами и выходами. Знание математики не скажет вам, какой алгоритм выбрать или как его лучше всего настроить. Вы можете обнаружить это только путем тщательных контролируемых экспериментов.
Не нужно знать, как работают алгоритмы . Важно знать об ограничениях и о том, как настраивать алгоритмы глубокого обучения. Но изучение алгоритмов может появиться позже.Вам необходимо постепенно накапливать знания об алгоритмах в течение длительного периода времени. Сегодня начните с освоения платформы.
Вам не нужно быть программистом на Python . Синтаксис языка Python может быть интуитивно понятным, если вы новичок в нем. Как и в других языках, сосредоточьтесь на вызовах функций (например, function ()) и назначениях (например, a = «b»). Это поможет вам в большинстве случаев. Вы разработчик и знаете, как быстро освоить основы языка.Просто начните и погрузитесь в подробности позже.
Вам не нужно быть экспертом в области глубокого обучения . Вы можете узнать о преимуществах и ограничениях различных алгоритмов позже, и есть множество сообщений, которые вы можете прочитать позже, чтобы освежить в памяти этапы проекта глубокого обучения и важность оценки навыков модели с помощью перекрестной проверки.
1. Установите TensorFlow и tf.keras
В этом разделе вы узнаете, что такое tf.keras, как его установить и как подтвердить, что он установлен правильно.
1.1 Что такое керас и tf.keras?
Keras — это библиотека глубокого обучения с открытым исходным кодом, написанная на Python.
Проект был запущен в 2015 году Франсуа Шоле. Он быстро стал популярным фреймворком для разработчиков, став одной из, если не самой, популярной библиотекой глубокого обучения.
В период 2015–2019 годов разработка моделей глубокого обучения с использованием математических библиотек, таких как TensorFlow, Theano и PyTorch, была громоздкой и требовала десятков или даже сотен строк кода для решения простейших задач.Основное внимание в этих библиотеках уделялось исследованиям, гибкости и скорости, а не простоте использования.
Keras был популярен, потому что API был чистым и простым, позволяя определять, согласовывать и оценивать стандартные модели глубокого обучения всего в нескольких строках кода.
Вторая причина взлета Keras заключалась в том, что он позволял вам использовать любую из ряда популярных математических библиотек глубокого обучения в качестве бэкэнда (например, для выполнения вычислений), такую как TensorFlow, Theano и более поздние версии CNTK.Это позволило использовать мощь этих библиотек (например, графических процессоров) с помощью очень чистого и простого интерфейса.
В 2019 году Google выпустила новую версию своей библиотеки глубокого обучения TensorFlow (TensorFlow 2), которая напрямую интегрировала API Keras и продвигала этот интерфейс как стандартный или стандартный интерфейс для разработки глубокого обучения на платформе.
Эта интеграция обычно называется интерфейсом tf.keras или API (« tf » сокращенно от « TensorFlow »).Это должно отличать его от так называемого автономного проекта с открытым исходным кодом Keras.
- Автономный Keras . Автономный проект с открытым исходным кодом, поддерживающий бэкенды TensorFlow, Theano и CNTK.
- тф.керас . API Keras интегрирован в TensorFlow 2.
Реализация Keras API в Keras упоминается как « tf.keras », потому что это идиома Python, используемая при обращении к API. Сначала импортируется модуль TensorFlow с именем « tf »; затем доступ к элементам API Keras осуществляется через вызовы tf.keras ; например:
# пример идиомы tf.keras python импортировать тензорный поток как tf # использовать keras API модель = tf.keras.Sequential () …
# пример tf.keras python idiom import tensorflow as tf # use keras API model = tf.keras.Sequential () … |
Я обычно сам не использую эту идиому; Я не думаю, что он читается чисто.
Учитывая, что TensorFlow был де-факто стандартной серверной частью для проекта с открытым исходным кодом Keras, интеграция означает, что теперь можно использовать одну библиотеку вместо двух отдельных библиотек. Кроме того, автономный проект Keras теперь рекомендует всем будущим разработкам Keras использовать API tf.keras .
В настоящее время мы рекомендуем пользователям Keras, которые используют мультибэкэнд Keras с бэкэндом TensorFlow, переключиться на tf.keras в TensorFlow 2.0. tf.keras лучше поддерживается и имеет лучшую интеграцию с функциями TensorFlow (активное выполнение, поддержка распространения и другие).
— Домашняя страница проекта Keras, по состоянию на декабрь 2019 г.
1.2 Как установить TensorFlow
Перед установкой TensorFlow убедитесь, что у вас установлен Python, например Python 3.6 или выше.
Если у вас не установлен Python, вы можете установить его с помощью Anaconda. Из этого туториала Вы узнаете, как:
Есть много способов установить библиотеку глубокого обучения с открытым исходным кодом TensorFlow.
Самый распространенный и, возможно, самый простой способ установить TensorFlow на вашу рабочую станцию - использовать pip .
Например, в командной строке вы можете ввести:
sudo pip установить tenorflow
sudo pip установить тензор потока |
Если вы предпочитаете использовать метод установки, более подходящий для вашей платформы или менеджера пакетов, вы можете увидеть полный список инструкций по установке здесь:
Сейчас нет необходимости настраивать графический процессор.
Все примеры в этом руководстве будут отлично работать на современном процессоре.Если вы хотите настроить TensorFlow для своего графического процессора, вы можете сделать это после завершения этого руководства. Не отвлекайся!
1.3 Как подтвердить установку TensorFlow
После установки TensorFlow важно подтвердить, что библиотека была успешно установлена и вы можете начать ее использовать.
Не пропускайте этот шаг .
Если TensorFlow установлен неправильно или выдает ошибку на этом шаге, вы не сможете запустить примеры позже.
Создайте новый файл с именем versions.py , скопируйте и вставьте в него следующий код.
# проверить версию импорт тензорного потока печать (тензорный поток .__ версия__)
# проверить версию import tensorflow print (tensorflow .__ version__) |
Сохраните файл, затем откройте командную строку и перейдите в каталог, в котором вы сохранили файл.
Затем введите:
После этого вы должны увидеть следующий результат:
Это подтверждает, что TensorFlow установлен правильно и что все мы используем одну и ту же версию.
Какая версия у вас стояла?
Разместите свой результат в комментариях ниже.
Здесь также показано, как запустить сценарий Python из командной строки. Я рекомендую запускать весь код из командной строки таким образом, а не из записной книжки или IDE.
Если вы получаете предупреждающие сообщения
Иногда при использовании tf.keras API, вы можете увидеть напечатанные предупреждения.
Это может включать сообщения о том, что ваше оборудование поддерживает функции, для использования которых ваша установка TensorFlow не была настроена.
Вот несколько примеров на моей рабочей станции:
Ваш ЦП поддерживает инструкции, для использования которых этот двоичный файл TensorFlow не скомпилирован: AVX2 FMA Служба XLA 0x7fde3f2e6180, выполняющая вычисления на платформе Host. Устройства: Устройство StreamExecutor (0): Хост, версия по умолчанию
Ваш ЦП поддерживает инструкции, для использования которых этот двоичный файл TensorFlow не был скомпилирован: AVX2 FMA Служба XLA 0x7fde3f2e6180, выполняющая вычисления на платформе Host.Устройства: Устройство StreamExecutor (0): Хост, версия по умолчанию |
Они не твоя вина. Вы не сделали ничего плохого .
Это информационные сообщения, и они не препятствуют выполнению вашего кода. Пока вы можете спокойно игнорировать сообщения этого типа.
Это намеренное дизайнерское решение, принятое командой TensorFlow, чтобы отображать эти предупреждающие сообщения. Обратной стороной этого решения является то, что оно сбивает с толку новичков и учит разработчиков игнорировать все сообщения, включая те, которые потенциально могут повлиять на выполнение.
Теперь, когда вы знаете, что такое tf.keras, как установить TensorFlow и как убедиться, что ваша среда разработки работает, давайте посмотрим на жизненный цикл моделей глубокого обучения в TensorFlow.
2. Жизненный цикл модели глубокого обучения
В этом разделе вы узнаете о жизненном цикле модели глубокого обучения и двух API tf.keras, которые можно использовать для определения моделей.
2.1 Жизненный цикл 5-ступенчатой модели
Модель имеет жизненный цикл, и это очень простое знание обеспечивает основу как для моделирования набора данных, так и для понимания tf.keras API.
Пять этапов жизненного цикла следующие:
- Определите модель.
- Скомпилируйте модель.
- Подходит к модели.
- Оцените модель.
- Делайте прогнозы.
Давайте подробнее рассмотрим каждый шаг по очереди.
Определите модель
Для определения модели необходимо сначала выбрать нужный тип модели, а затем выбрать архитектуру или топологию сети.
С точки зрения API, это включает определение слоев модели, настройку каждого уровня с помощью ряда узлов и функции активации и соединение слоев в единую модель.
Моделиможно определять либо с помощью последовательного API, либо с помощью функционального API, и мы рассмотрим это в следующем разделе.
… # определить модель модель = …
… # определить модель model = … |
Скомпилируйте модель
Для компиляции модели необходимо сначала выбрать функцию потерь, которую вы хотите оптимизировать, например среднеквадратичную ошибку или перекрестную энтропию.
Также требуется, чтобы вы выбрали алгоритм для выполнения процедуры оптимизации, обычно стохастический градиентный спуск или современный вариант, такой как Адам. Также может потребоваться, чтобы вы выбрали какие-либо показатели производительности, которые нужно отслеживать в процессе обучения модели.
С точки зрения API, это включает вызов функции для компиляции модели с выбранной конфигурацией, которая подготовит соответствующие структуры данных, необходимые для эффективного использования модели, которую вы определили.
Оптимизатор может быть указан как строка для известного класса оптимизатора, например « sgd » для стохастического градиентного спуска, или вы можете настроить экземпляр класса оптимизатора и использовать его.
Список поддерживаемых оптимизаторов см. Здесь:
… # компилируем модель opt = SGD (скорость обучения = 0,01, импульс = 0,9) model.compile (optimizer = opt, loss = ‘binary_crossentropy’)
… # скомпилировать модель opt = SGD (скорость обучения = 0,01, импульс = 0,9) model.compile (optimizer = opt, loss = ‘binary_crossentropy’) |
Три наиболее распространенных функции потерь:
- « binary_crossentropy » для двоичной классификации.
- ‘ sparse_categorical_crossentropy ‘ для мультиклассовой классификации.
- ‘ mse ‘ (среднеквадратичная ошибка) для регрессии.
… # компилируем модель model.compile (optimizer = ‘sgd’, loss = ‘mse’)
… # компилировать модель model.compile (optimizer = ‘sgd’, loss = ‘mse’) |
Список поддерживаемых функций потерь см .:
Метрики определяются как список строк для известных метрических функций или список функций, которые необходимо вызвать для оценки прогнозов.
Список поддерживаемых показателей см .:
… # компилируем модель model.compile (optimizer = ‘sgd’, loss = ‘binary_crossentropy’, metrics = [‘precision’])
… # скомпилировать модель model.compile (optimizer = ‘sgd’, loss = ‘binary_crossentropy’, metrics = [‘precision’]) |
Подходит для модели
Для подгонки модели необходимо сначала выбрать конфигурацию обучения, такую как количество эпох (циклы по набору обучающих данных) и размер пакета (количество выборок в эпоху, используемых для оценки ошибки модели).
Обучение применяет выбранный алгоритм оптимизации для минимизации выбранной функции потерь и обновляет модель, используя алгоритм обратного распространения ошибки.
Настройка модели — это медленная часть всего процесса, которая может занять от нескольких секунд до часов или дней, в зависимости от сложности модели, используемого оборудования и размера обучающего набора данных.
С точки зрения API, это включает вызов функции для выполнения процесса обучения. Эта функция будет заблокирована (не вернется) до тех пор, пока процесс обучения не завершится.
… # соответствовать модели model.fit (X, y, эпохи = 100, размер партии = 32)
… # соответствует модели model.fit (X, y, epochs = 100, batch_size = 32) |
Чтобы узнать, как выбрать размер партии, см. Этот учебник:
При подборе модели индикатор выполнения будет суммировать статус каждой эпохи и общий процесс обучения.Это можно упростить до простого отчета о производительности модели для каждой эпохи, установив для аргумента « подробный » значение 2. Весь вывод можно отключить во время обучения, установив « подробный » на 0.
… # соответствовать модели model.fit (X, y, эпохи = 100, размер_пакета = 32, подробный = 0)
… # соответствует модели model.fit (X, y, epochs = 100, batch_size = 32, verbose = 0) |
Оцените модель
Оценка модели требует, чтобы вы сначала выбрали набор данных удержания, используемый для оценки модели.Это должны быть данные, которые не используются в процессе обучения, чтобы мы могли получить объективную оценку производительности модели при прогнозировании новых данных.
Скорость оценки модели пропорциональна количеству данных, которые вы хотите использовать для оценки, хотя это намного быстрее, чем обучение, поскольку модель не изменяется.
С точки зрения API, это включает вызов функции с набором данных удержания и получение потерь и, возможно, других показателей, о которых можно сообщить.
… # оценить модель потеря = model.evaluate (X, y, подробный = 0)
… # оценить модель loss = model.evaluate (X, y, verbose = 0) |
Сделайте прогноз
Прогнозирование — это последний этап жизненного цикла. Вот почему мы в первую очередь хотели эту модель.
Это требует, чтобы у вас были новые данные, для которых требуется прогноз, например.грамм. где у вас нет целевых значений.
С точки зрения API, вы просто вызываете функцию для прогнозирования метки класса, вероятности или числового значения: того, что вы спроектировали в своей модели для прогнозирования.
Вы можете сохранить модель, а затем загрузить ее, чтобы делать прогнозы. Вы также можете подогнать модель ко всем имеющимся данным, прежде чем начнете ее использовать.
Теперь, когда мы знакомы с жизненным циклом модели, давайте рассмотрим два основных способа использования tf.keras API для построения моделей: последовательных и функциональных.
… # сделать прогноз yhat = model.predict (X)
… # сделать прогноз yhat = model.predict (X) |
2.2 API последовательной модели (простой)
API последовательной модели — самый простой и тот API, который я рекомендую, особенно на начальном этапе.
Он упоминается как « последовательный », потому что он включает определение класса Sequential и добавление слоев к модели один за другим линейным образом, от входа к выходу.
В приведенном ниже примере определяется модель последовательного MLP, которая принимает восемь входных данных, имеет один скрытый слой с 10 узлами, а затем выходной слой с одним узлом для прогнозирования числового значения.
# пример модели, определенной с помощью последовательного API из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense # определить модель model = Последовательный () model.add (Плотный (10, input_shape = (8,))) model.add (Плотный (1))
# пример модели, определенной с помощью последовательного API из tensorflow.keras import Sequential from tensorflow.keras.layers import Dense # определить модель model = Sequential () model.add (Dense (10, input_shape = (8,))) model.add ( Плотный (1)) |
Обратите внимание, что видимый слой сети определяется аргументом « input_shape » на первом скрытом слое. Это означает, что в приведенном выше примере модель ожидает, что вход для одной выборки будет вектором из восьми чисел.
Последовательный API прост в использовании, потому что вы продолжаете вызывать model.add () , пока не добавите все свои слои.
Например, вот глубокий MLP с пятью скрытыми слоями.
# пример модели, определенной с помощью последовательного API из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense # определить модель model = Последовательный () model.add (Плотный (100, input_shape = (8,))) model.add (Плотный (80)) модель.добавить (Плотный (30)) model.add (Плотный (10)) model.add (Плотный (5)) model.add (Плотный (1))
# пример модели, определенной с помощью последовательного API из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense # определить модель model = Sequential () model.add (Dense (100, input_shape = (8,))) model.add (Dense (80)) model.add (Dense (30)) model.добавить (Dense (10)) model.add (Dense (5)) model.add (Dense (1)) |
2.3 API функциональной модели (расширенный)
Функциональный API более сложен, но при этом более гибок.
Он включает явное соединение вывода одного слоя со входом другого слоя. Указывается каждое соединение.
Во-первых, входной слой должен быть определен через класс Input , и должна быть указана форма входного образца.Мы должны сохранить ссылку на входной слой при определении модели.
… # определяем слои x_in = Вход (shape = (8,))
… # определить слои x_in = Input (shape = (8,)) |
Затем полностью связанный слой можно подключить к входу путем вызова слоя и передачи входного слоя. Это вернет ссылку на выходное соединение в этом новом слое.
Затем мы можем соединить это с выходным слоем таким же образом.
После подключения мы определяем объект модели и указываем уровни ввода и вывода. Полный пример приведен ниже.
# пример модели, определенной с помощью функционального API из модели импорта tensorflow.keras из tenorflow.keras import Input из tensorflow.keras.layers import Dense # определяем слои x_in = Вход (shape = (8,)) x = плотный (10) (x_in) x_out = Плотный (1) (x) # определить модель model = Модель (входы = x_in, выходы = x_out)
# пример модели, определенной с помощью функционального API из tensorflow.keras import Model from tensorflow.keras import Input from tensorflow.keras.layers import Dense # определяем слои x_in = Input (shape = (8,)) x = Dense (10) (x_in ) x_out = Dense (1) (x) # определить модель model = Model (input = x_in, output = x_out) |
Таким образом, он позволяет создавать более сложные модели, такие как модели, которые могут иметь несколько входных путей (отдельные векторы) и модели, которые имеют несколько выходных путей (например.грамм. слово и число).
Функциональный API может доставить массу удовольствия, когда вы к нему привыкнете.
Подробнее о функциональном API см .:
Теперь, когда мы знакомы с жизненным циклом модели и двумя API-интерфейсами, которые можно использовать для определения моделей, давайте рассмотрим разработку некоторых стандартных моделей.
3. Как разрабатывать модели глубокого обучения
В этом разделе вы узнаете, как разрабатывать, оценивать и делать прогнозы с помощью стандартных моделей глубокого обучения, включая многослойные персептроны (MLP), сверточные нейронные сети (CNN) и рекуррентные нейронные сети (RNN).
3.1 Разработка моделей многослойного персептрона
Модель многослойного персептрона, или сокращенно MLP, представляет собой стандартную модель полностью связанной нейронной сети.
Он состоит из уровней узлов, где каждый узел подключен ко всем выходам из предыдущего уровня, а выход каждого узла связан со всеми входами для узлов следующего уровня.
MLP создается с помощью одного или нескольких слоев Dense . Эта модель подходит для табличных данных, то есть данных в том виде, в каком они выглядят в таблице или электронной таблице, с одним столбцом для каждой переменной и одной строкой для каждой переменной.Есть три проблемы прогнозного моделирования, которые вы, возможно, захотите изучить с помощью MLP; это бинарная классификация, мультиклассовая классификация и регрессия.
Давайте подберем модель на реальном наборе данных для каждого из этих случаев.
Обратите внимание, модели в этом разделе эффективны, но не оптимизированы. Посмотрите, сможете ли вы улучшить их работу. Публикуйте свои выводы в комментариях ниже.
MLP для двоичной классификации
Мы будем использовать набор данных двоичной (двухклассовой) классификации ионосферы, чтобы продемонстрировать MLP для двоичной классификации.
Этот набор данных включает прогнозирование того, находится ли структура в атмосфере или нет, с учетом отраженных сигналов радара.
Набор данных будет загружен автоматически с помощью Pandas, но вы можете узнать о нем больше здесь.
Мы будем использовать LabelEncoder для кодирования строковых меток в целочисленные значения 0 и 1. Модель будет соответствовать 67 процентам данных, а оставшиеся 33 процента будут использоваться для оценки, разделенной с помощью функции train_test_split ().
Рекомендуется использовать активацию « relu » с инициализацией веса « he_normal ».Эта комбинация имеет большое значение для преодоления проблемы исчезающих градиентов при обучении моделей глубоких нейронных сетей. Подробнее о ReLU см. В руководстве:
Модель предсказывает вероятность класса 1 и использует сигмовидную функцию активации. Модель оптимизирована с использованием адамовской версии стохастического градиентного спуска и направлена на минимизацию потерь кросс-энтропии.
Полный пример приведен ниже.
# mlp для двоичной классификации из панд импортировать read_csv из склеарна.model_selection импорт train_test_split из sklearn.preprocessing import LabelEncoder из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense # загрузить набор данных путь = ‘https://raw.githubusercontent.com/jbrownlee/Datasets/master/ionosphere.csv’ df = read_csv (путь, заголовок = Нет) # разделить на входные и выходные столбцы X, y = df.values [:,: -1], df.values [:, -1] # убедитесь, что все данные являются значениями с плавающей запятой X = X.astype (‘float32’) # кодировать строки в целое число y = LabelEncoder ().fit_transform (y) # разделить на наборы данных для обучения и тестирования X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,33) печать (X_train.shape, X_test.shape, y_train.shape, y_test.shape) # определить количество входных функций n_features = X_train.shape [1] # определить модель model = Последовательный () model.add (Dense (10, активация = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Dense (8, активация = ‘relu’, kernel_initializer = ‘he_normal’)) модель.добавить (Плотный (1, активация = ‘сигмоид’)) # компилируем модель model.compile (optimizer = ‘adam’, loss = ‘binary_crossentropy’, metrics = [‘precision’]) # соответствовать модели model.fit (X_train, y_train, epochs = 150, batch_size = 32, verbose = 0) # оценить модель потеря, acc = model.evaluate (X_test, y_test, verbose = 0) print (‘Точность теста:% .3f’% в соответствии) # сделать прогноз строка = [1,0,0,99539, -0,05889,0,85243,0,02306,0,83398, -0,37708,1,0.03760,0,85243, -0,17755,0,59755, -0,44945,0.60536, -0,38223,0,84356, -0,38542,0,58212, -0,32192,0,56971, -0,29674, 0,36946, -0,47357,0,56811, -0,51171, 0,41078, -0,46168, 0,21266, -0,34090, 0,42267, -0,51487,0,1 yhat = model.predict ([строка]) print (‘Прогноз:% .3f’% yhat)
1 2 3 4 5 6 7 8 9 10 11 12 13 140002 13 14 18 19 20 21 22 23 24 25 26 27 28 29 30 000 000 3435 36 | # mlp для двоичной классификации из pandas import read_csv из sklearn.model_selection import train_test_split из sklearn.preprocessing import LabelEncoder из tensorflow.keras import Sequential from tensorflow.keras.layers import Dense # загрузить набор данных path = ‘ jbrownlee / Datasets / master / ionosphere.csv ‘ df = read_csv (path, header = None) # разделить на столбцы ввода и вывода X, y = df.values [:,: -1], df. values [:, -1] # убедиться, что все данные являются значениями с плавающей запятой X = X.astype (‘float32’) # кодировать строки в целое число y = LabelEncoder (). fit_transform (y) # разделить на наборы данных для обучения и тестирования X_train, X_test, y_train, y_test = train_test_split ( test_size = 0,33) print (X_train.shape, X_test.shape, y_train.shape, y_test.shape) # определить количество входных функций n_features = X_train.shape [1] # определить модель model = Sequential () model.add (Dense (10, activate = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Dense (8, activate = ‘relu’, kernel_initializer = ‘he_normal’)) model.add (Dense (1, activate = ‘sigmoid’)) # скомпилировать модель model.compile (optimizer = ‘adam’, loss = ‘binary_crossentropy’, metrics = [‘precision’]) # соответствует модели model.fit (X_train, y_train, epochs = 150, batch_size = 32, verbose = 0) # оценивать модель потеря, acc = model.evaluate (X_test, y_test, verbose = 0) print (‘Test Accuracy:% .3f’% acc) # сделать прогноз row = [1,0, 0.99539, -0,05889,0,85243,0,02306,0,83398, -0,37708,1,0,03760,0,85243, -0,17755,0,59755, -0,44945,0.60536, -0,38223,0,84356, -0,38542,0,58212, -0,32192,0,569471, -0,32192,0,569471, -0,17 -0.47357,0.56811, -0.51171,0.41078, -0.46168,0.21266, -0.34090,0.42267, -0.54487,0.18641, -0.45300] yhat = model.predict ([row]) print (‘Прогноз:% .3f ‘% yhat) |
При выполнении примера сначала отображается форма набора данных, затем выполняется подгонка модели и оценка ее на тестовом наборе данных.Наконец, прогноз делается для одной строки данных.
Примечание : Ваши результаты могут отличаться из-за стохастической природы алгоритма или процедуры оценки или различий в числовой точности. Подумайте о том, чтобы запустить пример несколько раз и сравнить средний результат.
Какие результаты вы получили? Можете ли вы изменить модель, чтобы она стала лучше?
Разместите свои выводы в комментариях ниже.
В этом случае мы видим, что модель достигла точности классификации около 94 процентов, а затем предсказала вероятность, равную 0.9 что одна строка данных принадлежит классу 1.
(235, 34) (116, 34) (235,) (116,) Точность теста: 0,940 Прогноз: 0,991
(235, 34) (116, 34) (235,) (116,) Точность теста: 0,940 Прогноз: 0,991 |
MLP для мультиклассовой классификации
Мы будем использовать набор данных мультиклассовой классификации цветов ириса, чтобы продемонстрировать MLP для мультиклассовой классификации.
Эта задача включает в себя прогнозирование вида цветка ириса с учетом размеров цветка.
Набор данных будет загружен автоматически с помощью Pandas, но вы можете узнать о нем больше здесь.
Учитывая, что это мультиклассовая классификация, модель должна иметь по одному узлу для каждого класса в выходном слое и использовать функцию активации softmax. Функция потерь — это « sparse_categorical_crossentropy », которая подходит для целочисленных меток классов (например,грамм. 0 для одного класса, 1 для следующего класса и т. Д.)
Полный пример подбора и оценки MLP для набора данных цветов ириса приведен ниже.
# mlp для мультиклассовой классификации из numpy import argmax из панд импортировать read_csv из sklearn.model_selection import train_test_split из sklearn.preprocessing import LabelEncoder из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense # загрузить набор данных path = ‘https: // raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv ‘ df = read_csv (путь, заголовок = Нет) # разделить на входные и выходные столбцы X, y = df.values [:,: -1], df.values [:, -1] # убедитесь, что все данные являются значениями с плавающей запятой X = X.astype (‘float32’) # кодировать строки в целое число y = LabelEncoder (). fit_transform (y) # разделить на наборы данных для обучения и тестирования X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,33) print (X_train.shape, X_test.shape, y_train.shape, y_test.shape) # определить количество входных функций n_features = X_train.shape [1] # определить модель model = Последовательный () model.add (Dense (10, активация = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Dense (8, активация = ‘relu’, kernel_initializer = ‘he_normal’)) model.add (Плотный (3, активация = ‘softmax’)) # компилируем модель model.compile (optimizer = ‘adam’, loss = ‘sparse_categorical_crossentropy’, metrics = [‘precision’]) # соответствовать модели модель.fit (X_train, y_train, epochs = 150, batch_size = 32, verbose = 0) # оценить модель потеря, acc = model.evaluate (X_test, y_test, verbose = 0) print (‘Точность теста:% .3f’% в соответствии) # сделать прогноз row = [5.1,3.5,1.4,0.2] yhat = model.predict ([строка]) print (‘Прогноз:% s (class =% d)’% (yhat, argmax (yhat)))
1 2 3 4 5 6 7 8 9 10 11 12 13 140002 13 14 18 19 20 21 22 23 24 25 26 27 28 29 30 000 000 3435 36 37 | # mlp для мультиклассовой классификации из numpy import argmax from pandas import read_csv from sklearn.model_selection import train_test_split из sklearn.preprocessing import LabelEncoder из tensorflow.keras import Sequential from tensorflow.keras.layers import Dense # загрузить набор данных path = ‘ jbrownlee / Datasets / master / iris.csv ‘ df = read_csv (path, header = None) # разделить на столбцы ввода и вывода X, y = df.values [:,: -1], df. values [:, -1] # убедиться, что все данные являются значениями с плавающей запятой X = X.astype (‘float32’) # кодировать строки в целое число y = LabelEncoder (). fit_transform (y) # разделить на наборы данных для обучения и тестирования X_train, X_test, y_train, y_test = train_test_split ( test_size = 0,33) print (X_train.shape, X_test.shape, y_train.shape, y_test.shape) # определить количество входных функций n_features = X_train.shape [1] # определить модель model = Sequential () model.add (Dense (10, activate = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Dense (8, activate = ‘relu’, kernel_initializer = ‘he_normal’)) model.add (Dense (3, activate = ‘softmax’)) # скомпилировать модель model.compile (optimizer = ‘adam’, loss = ‘sparse_categorical_crossentropy’, metrics = [‘precision’]) # соответствует модели model.fit (X_train, y_train, epochs = 150, batch_size = 32, verbose = 0) # оценивать модель потеря, acc = model.evaluate (X_test, y_test, verbose = 0) print (‘Точность теста:%.3f ‘% acc) # сделать прогноз row = [5.1,3.5,1.4,0.2] yhat = model.predict ([row]) print (‘ Прогноз:% s (class =% d ) ‘% (yhat, argmax (yhat))) |
При выполнении примера сначала отображается форма набора данных, затем выполняется подгонка модели и оценка ее на тестовом наборе данных. Наконец, прогноз делается для одной строки данных.
Примечание : Ваши результаты могут отличаться из-за стохастической природы алгоритма или процедуры оценки или различий в числовой точности.Подумайте о том, чтобы запустить пример несколько раз и сравнить средний результат.
Какие результаты вы получили? Можете ли вы изменить модель, чтобы она стала лучше?
Разместите свои выводы в комментариях ниже.
В этом случае мы видим, что модель достигла точности классификации около 98 процентов, а затем предсказала вероятность того, что строка данных принадлежит каждому классу, хотя класс 0 имеет самую высокую вероятность.
(100, 4) (50, 4) (100,) (50,) Точность теста: 0.980 Прогноз: [[0,8680804 0,12356871 0,00835086]] (класс = 0)
(100, 4) (50, 4) (100,) (50,) Точность теста: 0,980 Прогноз: [[0,8680804 0,12356871 0,00835086]] (класс = 0) |
MLP для регрессии
Мы будем использовать набор данных регрессии жилищного фонда Бостона, чтобы продемонстрировать MLP для прогнозного моделирования регрессии.
Эта задача включает прогнозирование стоимости дома на основе свойств дома и района.
Набор данных будет загружен автоматически с помощью Pandas, но вы можете узнать о нем больше здесь.
Это задача регрессии, которая включает прогнозирование единственного числового значения. Таким образом, выходной слой имеет один узел и использует функцию активации по умолчанию или линейную функцию (без функции активации). Потеря среднеквадратичной ошибки (mse) сводится к минимуму при подборе модели.
Напомним, что это регрессия, а не классификация; следовательно, мы не можем рассчитать точность классификации.Подробнее об этом см. В руководстве:
.Полный пример подгонки и оценки MLP для набора данных о жилищном строительстве Бостона приведен ниже.
# mlp для регресса из numpy import sqrt из панд импортировать read_csv из sklearn.model_selection import train_test_split из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense # загрузить набор данных путь = ‘https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.csv ‘ df = read_csv (путь, заголовок = Нет) # разделить на входные и выходные столбцы X, y = df.values [:,: -1], df.values [:, -1] # разделить на наборы данных для обучения и тестирования X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,33) печать (X_train.shape, X_test.shape, y_train.shape, y_test.shape) # определить количество входных функций n_features = X_train.shape [1] # определить модель model = Последовательный () model.add (Dense (10, активация = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) модель.добавить (Dense (8, активация = ‘relu’, kernel_initializer = ‘he_normal’)) model.add (Плотный (1)) # компилируем модель model.compile (optimizer = ‘adam’, loss = ‘mse’) # соответствовать модели model.fit (X_train, y_train, epochs = 150, batch_size = 32, verbose = 0) # оценить модель error = model.evaluate (X_test, y_test, verbose = 0) print (‘MSE:% .3f, RMSE:% .3f’% (error, sqrt (error))) # сделать прогноз строка = [0.00632,18.00,2.310,0,0.5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98] yhat = model.predict ([строка]) print (‘Прогноз:% .3f’% yhat)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 21 22 23 24 25 26 27 28 29 30 30 | # mlp для регрессии из numpy import sqrt из pandas import read_csv из sklearn.model_selection import train_test_split из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense # загрузите набор данных path = ‘https://raw.githubusercontent.com/jbrownlee/Dathousing/master/master. csv ‘ df = read_csv (path, header = None) # разделить на столбцы ввода и вывода X, y = df.values [:,: -1], df.values [:, -1] # разделить на наборы данных для обучения и тестирования X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.33) print (X_train.shape, X_test.shape, y_train.shape, y_test.shape) # определить количество входных функций n_features = X_train.shape [1] # определить модель model Sequential () model.add (Dense (10, activate = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Dense (8, activate = ‘relu’, kernel_initializer = ‘he_normal’)) model.add (Dense (1)) # скомпилировать модель model.compile (optimizer = ‘adam’, loss = ‘mse’) # соответствует модели model.fit (X_train, y_train, epochs = 150, batch_size = 32, verbose = 0) # оценить модель error = model.evaluate (X_test, y_test, verbose = 0) print (‘MSE:% .3f, RMSE:% .3f’% (error, sqrt (error))) # сделать прогноз row = [0.00632,18.00,2.310,0,0,5380,6.5750,65.20,4.0900,1,296.0,15.30,396.90,4.98] yhat = model.predict ([row]) print (‘Прогноз:%.3f ‘% yhat) |
При выполнении примера сначала отображается форма набора данных, затем она соответствует модели и оценивает ее на тестовом наборе данных. Наконец, прогноз делается для одной строки данных.
Примечание : Ваши результаты могут отличаться из-за стохастической природы алгоритма или процедуры оценки или различий в числовой точности. Подумайте о том, чтобы запустить пример несколько раз и сравнить средний результат.
Какие результаты вы получили? Можете ли вы изменить модель, чтобы она стала лучше?
Разместите свои выводы в комментариях ниже.
В этом случае мы видим, что модель достигла MSE около 60, что является RMSE около 7 (единицы — тысячи долларов). Затем для единственного примера прогнозируется значение около 26.
(339, 13) (167, 13) (339,) (167,) MSE: 60,751, RMSE: 7,794 Прогноз: 26.983
(339, 13) (167, 13) (339,) (167,) MSE: 60,751, RMSE: 7,794 Прогнозируемый: 26,983 |
3.2 Разработка моделей сверточной нейронной сети
Сверточные нейронные сетиили сокращенно CNN — это тип сети, предназначенный для ввода изображений.
Они состоят из моделей со сверточными слоями, которые извлекают пространственные объекты (называемые картами признаков), и объединяют слои, которые выделяют особенности до наиболее заметных элементов.
CNNлучше всего подходят для задач классификации изображений, хотя их можно использовать в широком спектре задач, которые принимают изображения в качестве входных данных.
Популярной задачей классификации изображений является классификация рукописных цифр MNIST.Он состоит из десятков тысяч рукописных цифр, которые следует классифицировать как число от 0 до 9.
API tf.keras предоставляет удобную функцию для непосредственной загрузки и загрузки этого набора данных.
В приведенном ниже примере загружается набор данных и строятся первые несколько изображений.
# пример загрузки и построения набора данных mnist из tensorflow.keras.datasets.mnist import load_data из matplotlib import pyplot # загрузить набор данных (trainX, trainy), (testX, testy) = load_data () # суммировать загруженный набор данных print (‘Поезд: X =% s, y =% s’% (trainX.shape, trainy.shape)) print (‘Тест: X =% s, y =% s’% (testX.shape, testy.shape)) # построить первые несколько изображений для i в диапазоне (25): # определить подзаговор pyplot.subplot (5, 5, я + 1) # построить необработанные данные пикселей pyplot.imshow (trainX [i], cmap = pyplot.get_cmap (‘серый’)) # показать рисунок pyplot.show ()
# пример загрузки и построения набора данных mnist из tensorflow.keras.datasets.mnist import load_data from matplotlib import pyplot # load dataset (trainX, trainy), (testX, test () = load_datay) ) # суммировать загруженный набор данных print (‘Train: X =% s, y =% s’% (trainX.shape, trainy.shape)) print (‘Test: X =% s, y =% s’% (testX.shape, testy.shape)) # вычерчиваем первые несколько изображений for i in range (25 ): # define subplot pyplot.subplot (5, 5, i + 1) # построить необработанные данные пикселей pyplot.imshow (trainX [i], cmap = pyplot.get_cmap (‘gray’)) # показать рисунок pyplot.show () |
При выполнении примера загружается набор данных MNIST, а затем суммируются наборы данных поездов и тестов по умолчанию.
Поезд: X = (60000, 28, 28), y = (60000,) Тест: X = (10000, 28, 28), y = (10000,)
Поезд: X = (60000, 28, 28), y = (60000,) Тест: X = (10000, 28, 28), y = (10000,) |
Затем создается график, показывающий сетку примеров рукописных изображений в наборе обучающих данных.
График рукописных цифр из набора данных MNIST
Мы можем обучить модель CNN классифицировать изображения в наборе данных MNIST.
Обратите внимание, что изображения представляют собой массивы данных пикселей в градациях серого; следовательно, мы должны добавить размер канала к данным, прежде чем мы сможем использовать изображения в качестве входных данных для модели. Причина в том, что модели CNN ожидают изображения в формате «последний канал», то есть каждый пример сети имеет размеры [строки, столбцы, каналы], где каналы представляют собой цветовые каналы данных изображения.
Также рекомендуется масштабировать значения пикселей из диапазона по умолчанию 0–255 до 0–1 при обучении CNN.Дополнительные сведения о масштабировании значений пикселей см. В руководстве:
.Полный пример подбора и оценки модели CNN в наборе данных MNIST приведен ниже.
# пример cnn для классификации изображений из numpy import asarray из numpy import unique из numpy import argmax из tensorflow.keras.datasets.mnist import load_data из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense из тензорного потока.keras.layers импортировать Conv2D из tensorflow.keras.layers импортировать MaxPool2D из tensorflow.keras.layers import Flatten из tensorflow.keras.layers import Dropout # загрузить набор данных (x_train, y_train), (x_test, y_test) = load_data () # преобразовать данные в один канал x_train = x_train.reshape ((x_train.shape [0], x_train.shape [1], x_train.shape [2], 1)) x_test = x_test.reshape ((x_test.shape [0], x_test.shape [1], x_test.shape [2], 1)) # определяем форму входных изображений in_shape = x_train.форма [1:] # определяем количество классов n_classes = len (уникальный (y_train)) печать (in_shape, n_classes) # нормализовать значения пикселей x_train = x_train.astype (‘float32’) / 255,0 x_test = x_test.astype (‘float32’) / 255,0 # определить модель model = Последовательный () model.add (Conv2D (32, (3,3), активация = ‘relu’, kernel_initializer = ‘he_uniform’, input_shape = in_shape)) model.add (MaxPool2D ((2, 2))) model.add (Сглаживание ()) model.add (Dense (100, активация = ‘relu’, kernel_initializer = ‘he_uniform’)) модель.добавить (Выпадение (0,5)) model.add (Плотный (n_classes, активация = ‘softmax’)) # определить потерю и оптимизатор model.compile (optimizer = ‘adam’, loss = ‘sparse_categorical_crossentropy’, metrics = [‘precision’]) # соответствовать модели model.fit (x_train, y_train, epochs = 10, batch_size = 128, verbose = 0) # оценить модель потеря, acc = model.evaluate (x_test, y_test, verbose = 0) print (‘Точность:% .3f’% в соответствии) # сделать прогноз image = x_train [0] yhat = model.predict (asarray ([изображение])) print (‘Прогноз: класс =% d’% argmax (yhat))
1 2 3 4 5 6 7 8 9 10 11 12 13 140002 13 14 18 19 20 21 22 23 24 25 26 27 28 29 30 000 000 3435 36 37 38 39 40 41 42 43 | # пример cnn для классификации изображений из numpy import asarray из numpy import unique из numpy import argmax из tensorflow.keras.datasets.mnist import load_data from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.layers import Conv2D from tensorflow.keras.layers import tenorflow D 9000. keras.layers import Flatten из tensorflow.keras.layers import Dropout # load dataset (x_train, y_train), (x_test, y_test) = load_data () # преобразовать данные в один канал x_train = x_train.reshape ((x_train.shape [0], x_train.shape [1], x_train.shape [2], 1)) x_test = x_test.reshape ((x_test.shape [0], x_test.shape [1], x_test.shape [2], 1)) # определение формы входных изображений in_shape = x_train.shape [1:] # определение количества классов n_classes = len (unique (y_train)) print (in_shape, n_classes) # нормализовать значения пикселей x_train = x_train.astype (‘float32’) / 255.0 x_test = x_test.astype (‘float32’) / 255.0 # определить модель model = Sequential () model.add (Conv2D (32, (3,3), activate = ‘relu’, kernel_initializer = ‘he_uniform’, input_shape = in_shape)) model.add (MaxPool2D ((2, 2))) model.add (Flatten ()) model.add (Dense (100, активация = ‘relu’, kernel_initializer = ‘he_uniform’) ) model.add (Dropout (0.5)) model.add (Dense (n_classes, activate = ‘softmax’)) # определить потери и оптимизатор model.compile (optimizer = ‘adam’, loss = ‘sparse_categorical_crossentropy’, metrics = [‘precision’]) # соответствует модели model.fit (x_train, y_train, epochs = 10, batch_size = 128, verbose = 0) # оценить модель loss, acc = model.evaluate (x_test, y_test, verbose = 0) print (‘Accuracy:% .3f’% acc) # сделать прогноз image = x_train [ 0] yhat = model.predict (asarray ([image])) print (‘Прогноз: class =% d’% argmax (yhat)) |
При выполнении примера сначала отображается форма набора данных, затем выполняется подгонка модели и оценка ее на тестовом наборе данных.Наконец, делается прогноз для одного изображения.
Примечание : Ваши результаты могут отличаться из-за стохастической природы алгоритма или процедуры оценки или различий в числовой точности. Подумайте о том, чтобы запустить пример несколько раз и сравнить средний результат.
Какие результаты вы получили? Можете ли вы изменить модель, чтобы она стала лучше?
Разместите свои выводы в комментариях ниже.
Во-первых, форма каждого изображения сообщается вместе с количеством классов; мы видим, что каждое изображение имеет размер 28 × 28 пикселей и, как мы и ожидали, есть 10 классов.
В этом случае мы видим, что модель достигла точности классификации около 98 процентов на тестовом наборе данных. Затем мы можем видеть, что модель предсказала класс 5 для первого изображения в обучающем наборе.
(28, 28, 1) 10 Точность: 0,987 Прогнозируется: class = 5
(28, 28, 1) 10 Точность: 0,987 Прогноз: класс = 5 |
3.3 Разработка моделей рекуррентных нейронных сетей
Рекуррентные нейронные сети, или сокращенно RNN, предназначены для работы с последовательностями данных.
Они оказались очень эффективными для задач обработки естественного языка, когда последовательности текста предоставляются в качестве входных данных для модели. RNN также добились умеренных успехов в прогнозировании временных рядов и распознавании речи.
Самым популярным типом RNN является сеть с долгосрочной краткосрочной памятью, или сокращенно LSTM. LSTM могут использоваться в модели для принятия последовательности входных данных и выполнения прогноза, такого как присвоение метки класса или прогнозирование числового значения, такого как следующее значение или значения в последовательности.
Мы будем использовать набор данных о продажах автомобилей, чтобы продемонстрировать LSTM RNN для одномерного прогнозирования временных рядов.
Эта задача предполагает прогнозирование количества продаж автомобилей в месяц.
Набор данных будет загружен автоматически с помощью Pandas, но вы можете узнать о нем больше здесь.
Мы создадим задачу, чтобы взять окно данных за последние пять месяцев, чтобы спрогнозировать данные за текущий месяц.
Для этого мы определим новую функцию с именем split_sequence () , которая будет разделять входную последовательность на окна данных, подходящие для соответствия модели контролируемого обучения, такой как LSTM.
Например, если последовательность была:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
1, 2, 3, 4, 5, 6, 7, 8, 9, 10 |
Тогда образцы для обучения модели будут иметь вид:
Ввод, вывод 1, 2, 3, 4, 5 6 2, 3, 4, 5, 6 7 3, 4, 5, 6, 7 8 …
Вход Выход 1, 2, 3, 4, 5 6 2, 3, 4, 5, 6 7 3, 4, 5, 6, 7 8 … |
Мы будем использовать данные за последние 12 месяцев в качестве тестового набора данных.
LSTM ожидают, что каждая выборка в наборе данных будет иметь два измерения; первый — это количество временных шагов (в данном случае 5), а второй — количество наблюдений на один временной шаг (в данном случае это 1).
Поскольку это проблема регрессионного типа, мы будем использовать линейную функцию активации (без функции активации
) в выходном слое и оптимизируем функцию потерь среднеквадратичной ошибки.Мы также оценим модель, используя показатель средней абсолютной ошибки (MAE).
Полный пример подбора и оценки LSTM для задачи прогнозирования одномерного временного ряда приведен ниже.
# lstm для прогнозирования временных рядов из numpy import sqrt из numpy import asarray из панд импортировать read_csv из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense из tensorflow.keras.layers импортировать LSTM # разбиваем одномерную последовательность на образцы def split_sequence (последовательность, n_steps): X, y = список (), список () для i в диапазоне (len (последовательность)): # найти конец этого паттерна end_ix = i + n_steps # проверяем, не вышли ли мы за пределы последовательности если end_ix> len (последовательность) -1: перерыв # собираем входные и выходные части паттерна seq_x, seq_y = последовательность [i: end_ix], последовательность [end_ix] ИКС.добавить (seq_x) y.append (seq_y) вернуть asarray (X), asarray (y) # загрузить набор данных путь = ‘https://raw.githubusercontent.com/jbrownlee/Datasets/master/monthly-car-sales.csv’ df = read_csv (путь, заголовок = 0, index_col = 0, squeeze = True) # получить значения значения = df.values.astype (‘float32’) # указать размер окна n_steps = 5 # разбить на образцы X, y = split_sequence (значения, n_шагов) # преобразовать в [образцы, временные интервалы, особенности] Х = Х.reshape ((X.shape [0], X.shape [1], 1)) # разделить на поезд / тест n_test = 12 X_train, X_test, y_train, y_test = X [: — n_test], X [-n_test:], y [: — n_test], y [-n_test:] печать (X_train.shape, X_test.shape, y_train.shape, y_test.shape) # определить модель model = Последовательный () model.add (LSTM (100, активация = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_steps, 1))) model.add (Dense (50, активация = ‘relu’, kernel_initializer = ‘he_normal’)) model.add (Dense (50, активация = ‘relu’, kernel_initializer = ‘he_normal’)) модель.добавить (Плотный (1)) # компилируем модель model.compile (optimizer = ‘adam’, loss = ‘mse’, metrics = [‘mae’]) # соответствовать модели model.fit (X_train, y_train, epochs = 350, batch_size = 32, verbose = 2, validation_data = (X_test, y_test)) # оценить модель mse, mae = model.evaluate (X_test, y_test, verbose = 0) print (‘MSE:% .3f, RMSE:% .3f, MAE:% .3f’% (mse, sqrt (mse), mae)) # сделать прогноз row = asarray ([18024.0, 16722.0, 14385.0, 21342.0, 17180.0]). reshape ((1, n_steps, 1)) yhat = модель.предсказать (строка) print (‘Прогноз:% .3f’% (yhat))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 21 22 23 24 25 26 27 28 29 30 000 000 3435 36 37 38 39 40 41 42 43 44 45 46 47 00050005 4800051 52 53 54 55 | # lstm для прогнозирования временных рядов из numpy import sqrt из numpy import asarray из pandas import read_csv из tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.layers import LSTM # разбивает одномерную последовательность на образцы def split_sequence (последовательность, n_steps): X list (), list () for i in range (len (sequence)): # найти конец этого шаблона end_ix = i + n_steps # проверить, не вышли ли мы за пределы последовательности if end_ix > len (sequence) -1: break # собрать входные и выходные части шаблона seq_x, seq_y = sequence [i: end_ix], sequence [end_ix] X.append (seq_x) y.append (seq_y) return asarray (X), asarray (y) # загрузить набор данных path = ‘https://raw.githubusercontent.com/jbrownlee/Datasets /master/monthly-car-sales.csv ‘ df = read_csv (path, header = 0, index_col = 0, squeeze = True) # получить значения values = df.values.astype (‘ float32 ‘ ) # указать размер окна n_steps = 5 # разбить на образцы X, y = split_sequence (values, n_steps) # преобразовать в [образцы, временные шаги, особенности] X = X.reshape ((X.shape [0], X.shape [1], 1)) # разделить на поезд / тест n_test = 12 X_train, X_test, y_train, y_test = X [: — n_test], X [-n_test:], y [: — n_test], y [-n_test:] print (X_train.shape, X_test.shape, y_train.shape, y_test.shape) # определить модель model = Sequential () model.add (LSTM (100, Activation = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_steps, 1))) model.add (Dense (50, activate = ‘relu’, kernel_initializer = ‘he_normal’)) модель.add (Dense (50, activate = ‘relu’, kernel_initializer = ‘he_normal’)) model.add (Dense (1)) # скомпилировать модель model.compile (optimizer = ‘adam’, loss = ‘mse’, metrics = [‘mae’]) # соответствует модели model.fit (X_train, y_train, epochs = 350, batch_size = 32, verbose = 2, validation_data = (X_test, y_test)) # оценить модель mse, mae = model.evaluate (X_test, y_test, verbose = 0) print (‘MSE:% .3f, RMSE:% .3f, MAE:% .3f’% (mse, sqrt (mse), mae)) # сделать прогноз row = asarray ([18024.0, 16722.0, 14385.0, 21342.0, 17180.0]). Reshape ((1, n_steps, 1)) yhat = model.predict (row) print (‘Прогноз:% .3f’% (yhat)) |
При выполнении примера сначала отображается форма набора данных, затем выполняется подгонка модели и оценка ее на тестовом наборе данных. Наконец, делается прогноз для единственного примера.
Примечание : Ваши результаты могут отличаться из-за стохастической природы алгоритма или процедуры оценки или различий в числовой точности.Подумайте о том, чтобы запустить пример несколько раз и сравнить средний результат.
Какие результаты вы получили? Можете ли вы изменить модель, чтобы она стала лучше?
Разместите свои выводы в комментариях ниже.
Сначала отображается форма набора данных поезда и тестирования, подтверждающая, что последние 12 примеров используются для оценки модели.
В этом случае модель достигла MAE около 2800 и предсказала следующее значение в последовательности из набора тестов как 13199, где ожидаемое значение составляет 14 577 (довольно близко).
(91, 5, 1) (12, 5, 1) (91,) (12,) MSE: 12755421.000, RMSE: 3571.473, MAE: 2856.084 Прогноз: 13199,325
(91, 5, 1) (12, 5, 1) (91,) (12,) MSE: 12755421.000, RMSE: 3571.473, MAE: 2856.084 Прогноз: 13199.325 |
Примечание : перед подгонкой модели рекомендуется масштабировать и делать ряды стационарными.Я рекомендую это как расширение для повышения производительности. Подробнее о подготовке данных временных рядов для моделирования см. В учебном пособии:
.4. Как использовать расширенные функции модели
В этом разделе вы узнаете, как использовать некоторые из немного более продвинутых функций модели, такие как просмотр кривых обучения и сохранение моделей для дальнейшего использования.
4.1 Как визуализировать модель глубокого обучения
Архитектура моделей глубокого обучения может быстро стать большой и сложной.
Таким образом, важно иметь четкое представление о соединениях и потоках данных в вашей модели. Это особенно важно, если вы используете функциональный API, чтобы убедиться, что вы действительно соединили слои модели так, как предполагали.
Есть два инструмента, которые вы можете использовать для визуализации вашей модели: текстовое описание и график.
Текстовое описание модели
Текстовое описание вашей модели можно отобразить, вызвав функцию summary () в вашей модели.
В приведенном ниже примере определяется небольшая модель с тремя слоями, а затем резюмируется структура.
# пример резюмирования модели из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense # определить модель model = Последовательный () model.add (Dense (10, активация = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (8,))) model.add (Dense (8, активация = ‘relu’, kernel_initializer = ‘he_normal’)) model.add (Плотный (1, активация = ‘сигмоид’)) # резюмируйте модель модель.сводка ()
# пример резюмирования модели из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense # define model model = Sequential () model.add (Dense (10, activate = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (8,))) model.add (Dense (8, Activation = ‘relu’, kernel_initializer = ‘he_normal’)) model.add (Dense (1) , Activation = ‘sigmoid’)) # обобщить модель model.сводка () |
При выполнении примера печатается сводка по каждому слою, а также общая сводка.
Это бесценная диагностика для проверки выходных форм и количества параметров (весов) в вашей модели.
Модель: «последовательная» _________________________________________________________________ Слой (тип) Параметр формы вывода # ================================================== =============== плотный (Плотный) (Нет, 10) 90 _________________________________________________________________ плотный_1 (плотный) (нет, 8) 88 _________________________________________________________________ плотный_2 (плотный) (нет, 1) 9 ================================================== =============== Всего параметров: 187 Обучаемые параметры: 187 Необучаемые параметры: 0 _________________________________________________________________
Модель : «последовательная» _________________________________________________________________ Слой (тип) Параметр формы вывода # ============================ ===================================== плотный (плотный) (нет, 10) 90 _________________________________________________________________ плотный_1 (плотный) (нет, 8) 88 _________________________________________________________________ плотный_2 (плотный) (нет, 1) 9 =================== ============================================== Всего параметров : 187 Обучаемые параметры: 187 Необучаемые параметры: 0 _________________________________________________________________ |
Модель Архитектура Участок
Вы можете создать график своей модели, вызвав функцию plot_model ().
Будет создан файл изображения, содержащий прямоугольную и линейную диаграмму слоев вашей модели.
В приведенном ниже примере создается небольшая трехуровневая модель и сохраняется график архитектуры модели в « model.png », который включает входные и выходные формы.
# пример построения модели из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense из tensorflow.keras.utils import plot_model # определить модель model = Последовательный () модель.add (Dense (10, активация = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (8,))) model.add (Dense (8, активация = ‘relu’, kernel_initializer = ‘he_normal’)) model.add (Плотный (1, активация = ‘сигмоид’)) # резюмируйте модель plot_model (модель, ‘модель.png’, show_shapes = True)
# пример построения модели из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense из tensorflow.keras.utils import plot_model # define model model = Sequential () model.add (Dense (10, activate = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (8,))) model .add (Dense (8, activate = ‘relu’, kernel_initializer = ‘he_normal’)) model.add (Dense (1, activate = ‘sigmoid’)) # обобщить модель plot_model (model, ‘ model.png ‘, show_shapes = True) |
При выполнении примера создается график модели, показывающий прямоугольник для каждого слоя с информацией о форме и стрелки, которые соединяют слои, показывая поток данных через сеть.
График архитектуры нейронной сети
4.2 Как построить кривые обучения модели
Кривые обучения — это график производительности модели нейронной сети с течением времени, например, рассчитанный в конце каждой эпохи обучения.
Графики кривых обучения дают представление о динамике обучения модели, например о том, хорошо ли обучается модель, не соответствует ли она обучающему набору данных или не соответствует ли она обучающему набору данных.
Мягкое введение в кривые обучения и их использование для диагностики динамики обучения моделей см. В учебном пособии:
Вы можете легко создавать кривые обучения для своих моделей глубокого обучения.
Во-первых, вы должны обновить свой вызов функции соответствия, чтобы включить ссылку на набор данных проверки. Это часть обучающего набора, которая не используется для соответствия модели, а вместо этого используется для оценки производительности модели во время обучения.
Вы можете разделить данные вручную и указать аргумент validation_data , или вы можете использовать аргумент validation_split и указать процентное разделение набора обучающих данных и позволить API выполнить разделение за вас.Последнее пока проще.
Функция соответствия вернет объект history , который содержит трассировку показателей производительности, записанных в конце каждой эпохи обучения. Это включает в себя выбранную функцию потерь и каждую настроенную метрику, такую как точность, и каждая потеря и метрика рассчитываются для наборов данных обучения и проверки.
Кривая обучения — это график потерь в наборе обучающих данных и наборе данных проверки. Мы можем создать этот график из объекта history , используя библиотеку Matplotlib.
Пример ниже подходит для небольшой нейронной сети для задачи синтетической двоичной классификации. Разделение валидации в 30 процентов используется для оценки модели во время обучения, а потери кросс-энтропии в наборе данных поезда и валидации затем отображаются в виде линейного графика.
# пример построения кривых обучения из sklearn.datasets импортировать make_classification из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense из тензорного потока.keras.optimizers импортные SGD из matplotlib import pyplot # создать набор данных X, y = make_classification (n_samples = 1000, n_classes = 2, random_state = 1) # определить количество входных функций n_features = X.shape [1] # определить модель model = Последовательный () model.add (Dense (10, активация = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Плотный (1, активация = ‘сигмоид’)) # компилируем модель sgd = SGD (скорость обучения = 0,001, импульс = 0.8) model.compile (оптимизатор = sgd, loss = ‘binary_crossentropy’) # соответствовать модели history = model.fit (X, y, epochs = 100, batch_size = 32, verbose = 0, validation_split = 0,3) # сюжетные кривые обучения pyplot.title (‘Кривые обучения’) pyplot.xlabel (‘Эпоха’) pyplot.ylabel (‘Перекрестная энтропия’) pyplot.plot (history.history [‘потеря’], label = ‘поезд’) pyplot.plot (history.history [‘val_loss’], label = ‘val’) pyplot.legend () pyplot.show ()
1 2 3 4 5 6 7 8 9 10 11 12 13 140002 13 14 18 19 20 21 22 23 24 25 26 27 | # пример построения кривых обучения из sklearn.наборы данных import make_classification from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.optimizers import SGD from matplotlib import pyplot # create the dataset (n_samples = 1000, n_classes = 2, random_state = 1)# определить количество входных функций n_features = X.shape [1] # определить модель model = Sequential () model.add (Dense (10, activate = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Dense (1, activate = ‘sigmoid’)) # скомпилировать модель sgd = SGD (скорость обучения = 0,001, импульс = 0,8) model.compile (optimizer = sgd, loss = ‘binary_crossentropy’) # соответствует модели history = model.fit (X, y, epochs = 100 , batch_size = 32, verbose = 0, validation_split = 0.3) # график обучения кривых pyplot.title (‘Learning Curves’) pyplot.xlabel (‘Epoch’) pyplot.ylabel (‘Cross Entropy’) pyplot.plot (history.history [‘loss’], label = ‘train’) pyplot.plot (history.history [‘val_loss ‘], label =’ val ‘) pyplot.legend () pyplot.show () |
Выполнение примера соответствует модели в наборе данных. В конце прогона возвращается объект history , который используется в качестве основы для создания линейного графика.
Доступ к кросс-энтропийным потерям для обучающего набора данных осуществляется с помощью ключа « loss », а к потерям в проверочном наборе данных доступ осуществляется через ключ « val_loss » в атрибуте истории объекта истории.
Кривые потери кросс-энтропии для модели глубокого обучения
4.3 Как сохранить и загрузить вашу модель
Обучение и оценка моделей — это прекрасно, но мы можем захотеть использовать модель позже, не переобучая ее каждый раз.
Этого можно достичь, сохранив модель в файл, а затем загрузив ее и используя для прогнозирования.
Это может быть достигнуто с помощью функции save () модели для сохранения модели. Его можно загрузить позже с помощью функции load_model ().
Модель сохраняется в формате H5, эффективном формате хранения массива. Таким образом, вы должны убедиться, что библиотека h5py установлена на вашей рабочей станции. Это может быть достигнуто с помощью пункта ; например:
Пример ниже соответствует простой модели задачи синтетической двоичной классификации, а затем сохраняет файл модели.
# пример сохранения подходящей модели из sklearn.datasets импортировать make_classification из tensorflow.keras import Sequential из тензорного потока.keras.layers import Плотный из tensorflow.keras.optimizers импорт SGD # создать набор данных X, y = make_classification (n_samples = 1000, n_features = 4, n_classes = 2, random_state = 1) # определить количество входных функций n_features = X.shape [1] # определить модель model = Последовательный () model.add (Dense (10, активация = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Плотный (1, активация = ‘сигмоид’)) # компилируем модель sgd = SGD (скорость_обучения = 0.001, импульс = 0,8) model.compile (оптимизатор = sgd, loss = ‘binary_crossentropy’) # соответствовать модели model.fit (X, y, эпохи = 100, размер_пакета = 32, подробный = 0, разделение_проверки = 0,3) # сохранить модель в файл model.save (‘модель.h5’)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 20 | # пример сохранения подгонки модели из sklearn.наборы данных import make_classification from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.optimizers import SGD # create the dataset X, y = make_classification (n_samples) = 4, n_classes = 2, random_state = 1) # определить количество входных функций n_features = X.shape [1] # определить модель model = Sequential () model.add (Dense (10, activate = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Dense (1, activate = ‘sigmoid’)) # скомпилировать модель sgd = SGD (скорость обучения = 0,001, импульс = 0,8) model.compile (optimizer = sgd, loss = ‘binary_crossentropy’) # соответствует модели model.fit (X, y, epochs = 100, batch_size = 32, verbose = 0, validation_split = 0.3) # сохранить модель в файл model.save (‘model.h5’) |
Выполнение примера соответствует модели и сохраняет его в файл с именем « модель».h5 ‘.
Затем мы можем загрузить модель и использовать ее для прогнозирования, или продолжить ее обучение, или делать с ней все, что захотим.
Пример ниже загружает модель и использует ее для прогнозирования.
# пример загрузки сохраненной модели из sklearn.datasets импортировать make_classification из tensorflow.keras.models import load_model # создать набор данных X, y = make_classification (n_samples = 1000, n_features = 4, n_classes = 2, random_state = 1) # загружаем модель из файла model = load_model (‘модель.h5 ‘) # сделать прогноз row = [1.
# пример загрузки сохраненной модели из sklearn.datasets import make_classification from tensorflow.keras.models import load_model # создать набор данных X, y = make_classification (n_samples = 1000, n_features = n_features = n_features = 1000, n_features = = 2, random_state = 1) # загрузить модель из файла model = load_model (‘model.h5 ‘) # сделать прогноз row = [1. | |
При выполнении примера загружается изображение из файла, затем оно используется для прогнозирования новой строки данных и распечатывается результат.
5. Как повысить производительность модели
В этом разделе вы познакомитесь с некоторыми методами, которые можно использовать для повышения производительности ваших моделей глубокого обучения.
Большая часть повышения эффективности глубокого обучения заключается в том, чтобы избежать переобучения за счет замедления процесса обучения или его остановки в нужное время.
5.1 Как уменьшить переобучение с отсевом
Dropout — это умный метод регуляризации, который уменьшает переоснащение обучающего набора данных и делает модель более устойчивой.
Это достигается во время обучения, когда некоторое количество выходных данных слоя случайным образом игнорируется или « выпало из .Это приводит к тому, что слой выглядит и рассматривается как слой с другим количеством узлов и связью с предыдущим слоем.
Dropout делает процесс обучения зашумленным, заставляя узлы в пределах уровня вероятностно брать на себя большую или меньшую ответственность за входные данные.
Подробнее о том, как работает отсев, см. В этом руководстве:
Вы можете добавить исключение к своим моделям в качестве нового слоя перед слоем, для которого вы хотите, чтобы входные соединения были отключены.
Это включает добавление слоя Dropout (), который принимает аргумент, определяющий вероятность того, что каждый выход из предыдущего будет отброшен. Например. 0,4 означает, что при каждом обновлении модели будет сбрасываться 40 процентов входных данных.
Вы можете добавлять слои Dropout в модели MLP, CNN и RNN, хотя существуют также специализированные версии dropout для использования с моделями CNN и RNN, которые вы, возможно, также захотите изучить.
Пример ниже соответствует модели небольшой нейронной сети для задачи синтетической двоичной классификации.
Слой исключения с 50-процентным выпадением вставляется между первым скрытым слоем и выходным слоем.
# пример использования dropout из sklearn.datasets импортировать make_classification из tensorflow.keras import Sequential из tensorflow.keras.layers import Dense из tensorflow.keras.layers import Dropout из matplotlib import pyplot # создать набор данных X, y = make_classification (n_samples = 1000, n_classes = 2, random_state = 1) # определить количество входных функций n_features = X.форма [1] # определить модель model = Последовательный () model.add (Dense (10, активация = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Выпадение (0,5)) model.add (Плотный (1, активация = ‘сигмоид’)) # компилируем модель model.compile (optimizer = ‘adam’, loss = ‘binary_crossentropy’) # соответствовать модели model.fit (X, y, эпохи = 100, размер_пакета = 32, подробный = 0)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 | # пример использования dropout из sklearn.наборы данных import make_classification from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.layers import Dropout from matplotlib import pyplot # create the dataset (n_samples = 1000, n_classes = 2, random_state = 1)# определить количество входных функций n_features = X.shape [1] # определить модель model = Sequential () model.add (Dense (10, Activation = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Dropout (0.5)) model.add (Dense (1, activate = ‘ sigmoid ‘)) # скомпилировать модель model.compile (optimizer =’ adam ‘, loss =’ binary_crossentropy ‘) # соответствовать модели model.fit (X, y, epochs = 100, batch_size = 32, подробный = 0) |
5.2 Как ускорить обучение с помощью пакетной нормализации
Масштаб и распределение входных данных в слой могут сильно повлиять на то, насколько легко или быстро этот слой можно обучить.
Обычно поэтому рекомендуется масштабировать входные данные перед их моделированием с помощью модели нейронной сети.
Пакетная нормализация — это метод обучения очень глубоких нейронных сетей, который стандартизирует входные данные для уровня для каждого мини-пакета. Это приводит к стабилизации процесса обучения и значительному сокращению количества эпох обучения, необходимых для обучения глубоких сетей.
Подробнее о том, как работает пакетная нормализация, см. В этом руководстве:
Вы можете использовать пакетную нормализацию в своей сети, добавив уровень пакетной нормализации перед слоем, для которого вы хотите иметь стандартизованные входные данные.Вы можете использовать пакетную нормализацию с моделями MLP, CNN и RNN.
Это может быть достигнуто путем непосредственного добавления слоя BatchNormalization.
В приведенном ниже примере определяется небольшая сеть MLP для задачи прогнозирования двоичной классификации с пакетным уровнем нормализации между первым скрытым слоем и выходным слоем.
# пример использования пакетной нормализации из sklearn.datasets импортировать make_classification из tensorflow.keras import Sequential из тензорного потока.keras.layers import Плотный из tensorflow.keras.layers импортировать BatchNormalization из matplotlib import pyplot # создать набор данных X, y = make_classification (n_samples = 1000, n_classes = 2, random_state = 1) # определить количество входных функций n_features = X.shape [1] # определить модель model = Последовательный () model.add (Dense (10, активация = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (BatchNormalization ()) model.add (Плотный (1, активация = ‘сигмоид’)) # компилируем модель модель.компилировать (optimizer = ‘adam’, loss = ‘binary_crossentropy’) # соответствовать модели model.fit (X, y, эпохи = 100, размер_пакета = 32, подробный = 0)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 | # пример использования пакетной нормализации из sklearn.наборы данных import make_classification from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.layers import BatchNormalization from matplotlib import pyplot # create the dataset (n_samples = 1000, n_classes = 2, random_state = 1) # определить количество входных функций n_features = X.shape [1] # определить модель model = Sequential () model.add (Dense (10, activate = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (BatchNormalization ()) model.add (Dense (1, activate = ‘sigmoid ‘)) # скомпилировать модель model.compile (optimizer =’ adam ‘, loss =’ binary_crossentropy ‘) # соответствовать модели model.fit (X, y, epochs = 100, batch_size = 32 , подробный = 0) |
Кроме того, tf.keras имеет ряд других уровней нормализации, которые вы, возможно, захотите изучить; см .:
5.3 Как остановить тренировку в нужное время с помощью ранней остановки
Нейронные сети сложно обучить.
Слишком мало обучения — модель не соответствует требованиям; слишком много обучения, и модель выходит за рамки обучающего набора данных. В обоих случаях модель оказывается менее эффективной, чем могла бы быть.
Один из подходов к решению этой проблемы — использовать раннюю остановку. Это включает в себя мониторинг потерь в наборе обучающих данных и наборе данных проверки (подмножество обучающего набора, которое не используется для соответствия модели).Как только потеря для набора проверки начинает показывать признаки переобучения, процесс обучения можно остановить.
Подробнее о ранней остановке см. В руководстве:
Раннюю остановку можно использовать с вашей моделью, предварительно убедившись, что у вас есть набор данных проверки. Вы можете определить набор данных проверки вручную с помощью аргумента validation_data функции fit () , или вы можете использовать validation_split и указать количество обучающего набора данных, которое нужно удерживать для проверки.
Затем вы можете определить EarlyStopping и указать ему, какой показатель производительности следует отслеживать, например « val_loss » для потерь в наборе данных проверки, и количество эпох для наблюдаемого переобучения, прежде чем принимать меры, например 5.
Этот настроенный обратный вызов EarlyStopping затем может быть предоставлен функции fit () через аргумент « callbacks », который принимает список обратных вызовов.
Это позволяет вам установить большое количество эпох и быть уверенным, что обучение закончится, как только модель начнет переобучаться.Вы также можете создать кривую обучения, чтобы получить больше информации о динамике обучения во время бега и о том, когда тренировка была остановлена.
Пример ниже демонстрирует небольшую нейронную сеть для задачи синтетической двоичной классификации, которая использует раннюю остановку для остановки обучения, как только модель начинает переобучаться (примерно через 50 эпох).
# пример использования ранней остановки из sklearn.datasets импортировать make_classification из тензорного потока.keras импорт Последовательный из tensorflow.keras.layers import Dense из tensorflow.keras.callbacks импортировать EarlyStopping # создать набор данных X, y = make_classification (n_samples = 1000, n_classes = 2, random_state = 1) # определить количество входных функций n_features = X.shape [1] # определить модель model = Последовательный () model.add (Dense (10, активация = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Плотный (1, активация = ‘сигмоид’)) # компилируем модель модель.компилировать (optimizer = ‘adam’, loss = ‘binary_crossentropy’) # настроить раннюю остановку es = EarlyStopping (monitor = ‘val_loss’, терпение = 5) # соответствовать модели history = model.fit (X, y, epochs = 200, batch_size = 32, verbose = 0, validation_split = 0.3, callbacks = [es])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 19 | # пример использования ранней остановки из sklearn.наборы данных import make_classification from tensorflow.keras import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.callbacks import EarlyStopping # создает набор данных X, y = make_classification (n = 2, random_state = 1) # определить количество входных функций n_features = X.shape [1] # определить модель model = Sequential () model.add (Dense (10, activate = ‘relu’, kernel_initializer = ‘he_normal’, input_shape = (n_features,))) model.add (Dense (1, activate = ‘sigmoid’)) # скомпилировать модель model.compile (optimizer = ‘adam’, loss = ‘binary_crossentropy’) # настроить раннюю остановку es = EarlyStopping (monitor = ‘val_loss’, терпение = 5) # соответствовать модели history = model .fit (X, y, эпохи = 200, batch_size = 32, подробный = 0, validation_split = 0.3, callbacks = [es]) |
ТФ.keras API предоставляет ряд обратных вызовов, которые вы, возможно, захотите изучить; Вы можете узнать больше здесь:
Дополнительная литература
Этот раздел предоставляет дополнительные ресурсы по теме, если вы хотите углубиться.
Учебники
Книги
Направляющие
API
Резюме
В этом руководстве вы обнаружили пошаговое руководство по разработке моделей глубокого обучения в TensorFlow с использованием API tf.keras.
В частности, вы выучили:
- Разница между Керасом и тф.keras, а также как установить и подтвердить, что TensorFlow работает.
- 5-этапный жизненный цикл моделей tf.keras и способы использования последовательных и функциональных API.
- Как разработать модели MLP, CNN и RNN с tf.keras для регрессии, классификации и прогнозирования временных рядов.
- Как использовать расширенные функции tf.keras API для проверки и диагностики вашей модели.
- Как повысить производительность вашей модели tf.keras за счет сокращения переобучения и ускорения обучения.
Есть вопросы?
Задайте свои вопросы в комментариях ниже, и я постараюсь ответить.
Разрабатывайте проекты глубокого обучения с помощью Python!
Что, если бы вы могли разработать сеть за считанные минуты
… всего несколькими строками Python
Узнайте, как это сделать, в моей новой электронной книге:
Deep Learning With Python
Он охватывает сквозных проекта по таким темам, как:
Многослойные персептроны , Сверточные сети и Рекуррентные нейронные сети и другие…
Наконец-то привнесите глубокое обучение в
Ваши собственные проекты
Пропустить академики. Только результаты.
Посмотрите, что внутриТоп-10 пулеметов, рейтинг
Пулеметы — один из самых забавных архетипов оружия в Destiny 2. Это тяжелое оружие наносит большой урон крупным врагам, столь же легко убивая орды врагов. Хотя они отсутствовали в течение первого года Destiny 2, они триумфально вернулись на второй год.
По теме: Destiny 2: Лучшие ручные пушки для PvE
С тех пор, как Thunderlord вернулся в Festival of the Lost во 2-м году, пулеметы стали фаворитом фанатов в сообществе Destiny 2. Тем, кто ценит использование боеприпасов и фактор удовольствия, стоит изучить возможность использования этого архетипа оружия. Вот десять лучших пулеметов в Destiny 2.
Обновлено 3 сентября 2021 года Чарльзом Бургаром: Сезон пропавших без вести увеличил весь урон пулемета на 30% в PvE, что позволяет им лучше выполнять свою роль в качестве дополнительных машин для убийства.Они, безусловно, намного сильнее, чем раньше, хотя в этом сезоне новых пулеметов в песочницу не было. Вместо этого Bungie внесла некоторые изменения в баланс Xenophage и обновила пул перков A Fine Memorial. Мы обновили этот список уровней, чтобы учесть изменения Xenophage и новые льготы, представленные в A Fine Memorial.
10 Повелитель грома
Как получить: Экзотические энграммы, найденные через Зура или мировые дропы.
Когда это оружие было впервые выпущено, оно было признано одним из лучших силовых орудий в Destiny 2. Когда-то автоматическая перезагрузка и наложение баффов были обычным явлением, это было в некоторой степени правдой.
Bungie создала новое оружие, выпустила новые перки, улучшила одни архетипы и ослабила другие. Теперь Thunderlord чувствует себя оболочкой своего прежнего «я». Как оружие для уничтожения орд, Thunderlord выделяется своими заряженными молниями боеприпасами, которые могут цепляться между целями.Когда любой крупный враг или босс вступает в бой, Thunderlord сильно не хватает огневой мощи, необходимой для конкуренции с другими пулеметами и даже специальным оружием. Он по-прежнему фантастичен в борьбе с рядовыми целями, хотя Trinity Ghoul и Riskrunner также могут заполнить эту нишу, не занимая ваш слот Heavy.
9 Наследник Явный
Как получить: Событие Guardian Games.
Пожалуй, единственная хорошая вещь, которая вышла из мероприятия Guardian Games 2020 года, Heir Apparent — это экзотический пулемет, который развертывает мощный защитный экран, когда он полностью заправлен.
Если у вас есть мастерское оружие, щит невероятно силен в PvP, он способен без проблем поглощать сотни не дуговых пуль. Только суперы и дуговое оружие могут надеяться сломать его.
Heir Apparent — надежная машина для очистки надстроек, выпускающая абсурдное количество пуль каждую секунду.Щит, который он дает, может поглотить массу наказаний в PvE и может перекрыть верхний щит Icefall Mantle для магистралей Титана. Возможно, это не лучший пулемет для нанесения урона, но его верхний щит настолько силен, что это оружие становится забавным выбором вне мета для PvE и удивительно мощным оружием для PvP.
8 Седьмой серафим SAW
Как получить: Легендарные энграммы мира.
С точки зрения перков, Seventh Seraph SAW интересен. Это единственный пулемет, который может катиться с огневой линией, а это означает, что он может нанести значительный урон крупным игрокам в ударах и случайном PvE-контенте.
По теме: Destiny 2: Лучшие сборки чернокнижников для PvP и PvE
А еще лучше то, что это оружие может порождать Warmind Cells, если у вас есть один мод из Season of the Worthy. Эти ячейки предоставляют широкий спектр бонусов, которые могут превратить самый сложный контент в тривиальные дела.Возможно, он не превосходит другие высококлассные пулеметы с точки зрения наносимого урона, но полезность, которую он может принести, делает его отличным выбором.
Рекомендуемые черты характера:
- Column One: Field Prep, кобура с автоматической загрузкой
- Колонка 2: Disruption Break (PvE), Vorpal Weapon
7 Термическая эрозия
Как получить: Охота на воинов Империи от Варикса.Он также может выпасть с побежденных Бригских HVT на Европе.
Пусть вас не вводит в заблуждение отсутствие перков урона у Thermal Erosion. Этот пистолет — монстр, если его использовать в правильных руках. Как скорострельная рама, термическая эрозия выпускает шквал пуль, которые могут растопить мейджоров, как горячий нож по маслу.
Перки для этого оружия включают выбор между Подрывником и Источником, оба из которых являются перками высшего уровня для оружия этого архетипа.Бросок гранаты с помощью Demolitionist обходит долгую перезарядку Thermal Erosion. Wellspring — также отличный выбор, позволяющий использовать множество способностей между убийствами. Возможно, это не лучший выбор для PvP, но это феноменальный пулемет для PvE и Gambit.
Рекомендуемые черты характера:
- Первый столбец: Подготовка поля, Момент Дзен (PvP)
- Колонка 2: Стрекоза (PvE), Подрывник / Источник, Tap the Trigger (PvP)
6 Расколотый шифр
Как получить: Переопределить и сфокусировать мрачные энграммы.
Если вы когда-нибудь хотели использовать пулемет в качестве основного оружия рабочей лошадки, не ищите ничего, кроме Shattered Cipher. Это оружие имеет абсурдное количество боеприпасов, наносит солидный урон за выстрел и может бросаться с некоторыми отличными перками.
Field Prep and Rampage — это популярный бросок для PvE, позволяющий этому оружию переносить более 500 патронов и получать бонус к урону при убийстве врагов. Чтобы это оружие было приятным, вам нужно сосредоточиться на использовании бонусов для ствола и магазина, которые повышают вашу устойчивость, так как это оружие работает как грузовик — даже на ПК.Как только вы получите достаточную стабильность, это оружие станет мечтой в PvE. Скорострельные станковые пулеметы ужасны в PvP, и Shattered Cipher не исключение. Не используйте это оружие против других Стражей.
Рекомендуемые черты характера:
- Первый столбец: Подготовка к работе, разогрев
- Колонка 2: Буйство, в окружении
5 Лавина
Как получить: капли во время Рассвета.
Доступный только во время The Dawning, Avalanche Machine Gun имеет огромный пул перков и отличный набор характеристик, что делает его хорошо подходящим для PvP.
Связанный: Судьба 2: как быстро фармить опыт
У этого пулемета есть помощь при прицеливании на 90 и возможность получения высокой характеристики дальности, что делает это оружие легким в использовании против других Стражей на средней дистанции. Для PvP, Killing Wind и Tap the Trigger упрощают обращение с этим оружием.В качестве альтернативы вы можете использовать Излишек вместо Убивающего ветра, чтобы значительно улучшить управляемость оружия и перезагрузить статистику. Если вы хотите использовать Avalance для PvE, возможна стандартная комбинация перков Outlaw и Swashbuckler, хотя в этом списке есть пулеметы, которые намного лучше подходят для контента PvE.
Рекомендуемые черты характера:
- Первый столбец: Убийственный ветер, Преступник (PvE), Излишки
- Вторая колонка: Tap the Trigger (PvP), Swashbuckler
4 Ксенофаг
Как получить: Экзотический квест, найденный на Луне.
О, как пали сильные. Ксенофаг был лучшим пулеметом в Destiny 2, пока не был выпущен Season of the Lost. Скорострельность этого оружия уменьшилась, урон немного увеличился, а массивный нерф Warmind Cells косвенно повлиял на способность Ксенофага уничтожать группы врагов.
Так почему же он до сих пор занимает довольно высокое место в этом списке? Ну, это Xenophage , снайперская винтовка и пулемет, слитые в одно целое.Он бьет, как грузовик, с каждым выстрелом, нанося большой урон мажорам и чемпионам низкого уровня. Каждый выстрел также наносит урон Solar AoE, позволяя создавать ячейки Warmind, пока на вашу броню установлен Wrath of Rasputin. Не так много пулеметов, которые могут стрелять по врагам на расстоянии и создавать ячейки Warmind с такой степенью согласованности.
Xenophage также заслуживает похвалы как PvP и Gambit Heavy. Это оружие уничтожает Стражей двумя пулями практически с любого расстояния, что делает его отличным оружием Захватчиков для Гамбита.А для Crucible Xenophage — отличный выбор, если вы хотите быстро отключить Стражей на расстоянии. Его устойчивый DPS мог быть убит, но полезность оружия осталась. Если вам нужно тяжелое оружие на все руки, то Ксенофага сложно превзойти.
3 Прекрасный мемориал
Как получить: Сущность жадности (квест на Лунное оружие)
Большая часть переизданного лунного оружия из Season of the Splicer вернулась с худшим набором перков, чем то, что было в Shadowkeep.К счастью, A Fine Memorial был переиздан с фантастическим новым набором перков, которые делают его одним из лучших PvE-пулеметов, которые вы можете приобрести в настоящее время.
По теме: Судьба 2: все способы получить переизданное снаряжение города грез
Прекрасный мемориал — один из двух пулеметов, которые в настоящее время могут использовать «Выживание», позволяя этому оружию пополнять большую часть своего магазина после каждого убийства. Его можно сочетать с Безумием, чтобы увеличить ваш урон, управляемость и скорость перезарядки.Если вы предпочитаете более эффективные перки урона, вы можете получить One for All вместо Frenzy. Излишне говорить, что это оружие становится чудовищем в PvE, когда вы получаете тяжелые боеприпасы.
Это оружие также является отличным выбором для PvP. Это единственный пулемет со скоростью вращения 600 об / мин, который может вращаться с помощью Quickdraw и Snapshot Sights, устраняя неуклюжее управление, которым славится большинство пулеметов. Это не лучшее оружие для Гамбита, хотя в настоящее время это один из лучших пулеметов, которые вы можете использовать в Горниле.
Рекомендуемые черты характера:
- Первый столбец: Снабжение, подготовка поля, оттяжка (PvP)
- Колонка 2: Frenzy, One for All, Snapshot Sights (PvP).
2 День памяти
Как получить: Рейд Deep Stone Crypt (встреча с Таниксом).
Поминовение — духовный преемник Hammerhead. Оба являются частью одного и того же архетипа Adaptive Frame, оба наносят урон Бездны, и оба имеют большой диапазон характеристик.
В то время как большинство придерживается Hammerhead для его базовой статистики, Commemoration также имеет фантастический пул перков, с которым можно работать. Стрекоза может превратить этот пистолет в машину для убийства надстроек. В качестве альтернативы Rampage и Reconstruction превращают это оружие в немного худшую версию 21% Delirium.Поклонники Crucible могут даже получить удовольствие от этого оружия, если они получат крен с Dynamic Sway Reduction и Under Pressure.
Рекомендуемые черты характера:
- Первый столбец: Реконструкция, динамическое снижение раскачивания (PvP)
- Колонка 2: Буйство, Стрекоза (PvE), Движущаяся цель (PvP)
1 Корректирующая мера
Как получить: Хранилище Стеклянного рейда (схватки слияния, тамплиера и Атеона).
Corrective Measure — это ближайшая замена 21% Delirium, которую мы получим в Destiny 2. В настоящее время это один из двух пулеметов, которые могут использовать Subsistence, позволяя этому оружию автоматически перезаряжаться после убийства.
Вы можете объединить Subsistence с One for All, Firefly, Adrenaline Junkie или Thresh. Firefly создает уникальную комбинацию повреждений для этого оружия, позволяя наносить урон Бездны каждой пулей и урон Солнца после нанесения точного финального удара.Corrective Measure отлично подходит для очистки надстройки, снятия щитов в матчах игры благодаря Firefly и для сборки гранат из-за его способности одновременно бросать Demolitionist и Adrenaline Junkie. Если вы любите бросать гранаты, возьмите этот пистолет. Если вы любите использовать пулеметы для очистки надстройки, приобретите этот пистолет. Если вы вообще любите пулеметы, купите этот пистолет. Корректирующая мера не разочарует.
Рекомендуемые черты характера:
- Первая колонка: Снабжение, Подрывник
- Вторая колонка: Светлячок, Один за всех (PvE), Адреналиновый наркоман (в паре с Подрывником)
Далее: Destiny 2: Beyond Light — полное руководство и пошаговое руководство
Destiny 2: 10 лучших дробовиков для PvPЕсли вы ветеран Crucible или в первую очередь PvE-игрок, вот дробовики, на которые следует обратить внимание, чтобы доминировать в PvP в Destiny 2.
Читать далее
Об авторе Чарльз Бургар (Опубликовано 747 статей)Чарльз Бургар — эксперт во всех областях техники и игр.Окончив общественный колледж Пайкс-Пик в 2018 году со степенью научного сотрудника, Чарльз посвятил свое время анализу популярных видеоигр, фильмов и технологий. Понимая игры столько, сколько он себя помнит, Чарльз очень заинтересован в понимании того, что делает их интересными. В настоящее время он является писателем-фрилансером для TheGamer и Game Rant.
Более От Чарльза Бургарасемейств машин | Документация по Compute Engine | Google Cloud
В этом документе определены термины консоли Google Cloud, используемые для описания виртуальных машины (ВМ).Виртуальные машины — это базовое оборудование, которое вы используете для разработка приложений и выполнение рабочих нагрузок. Все виртуальные машины классифицируются по машинам семья. Второе поколение универсальных виртуальных машин включает E2, E2 с общим ядром, N2 и N2D. Виртуальные машины с общим ядром N1 и N1 находятся в первое поколение. Поддержка всех семейств машин вытесняемые виртуальные машины, за исключением Виртуальные машины M2, оптимизированные для памяти.
Примечание: Это список семейств компьютеров Compute Engine. Для подробного объяснения каждой семьи, см. следующие страницы:- общего назначения — лучшее соотношение цены и качества для различных рабочих нагрузок.
- Оптимизировано для вычислений — высочайшая производительность на ядро в Compute Engine и оптимизирован для рабочих нагрузок с интенсивными вычислениями.
- с оптимизацией памяти — идеально подходит для рабочих нагрузок с интенсивным использованием памяти, предлагая больше памяти на Core, чем другие семейства машин, с объемом памяти до 12 ТБ.
- Оптимизирован для ускорителя — идеален для архитектуры Compute Unified Device с массовым распараллеливанием. (CUDA) вычислять рабочие нагрузки, такие как машинное обучение (ML) и высокопроизводительные вычисления (HPC).Эта семья лучший вариант для рабочих нагрузок, требующих графических процессоров.
Конфигурации машины определяются следующими терминами:
- Семейство компьютеров : тщательно подобранный набор конфигураций процессоров и оборудования оптимизирован для конкретных рабочих нагрузок. В процессе создания виртуальной машины вы выбираете предпочитаемое семейство машин и настраиваете виртуальную машину.
- Серия : В консоли семейства машин дополнительно классифицируются по поколение серии.Новые виртуальные машины перечислены под вторым поколением, и старые виртуальные машины перечислены в первом поколении.
- Тип машины : В каждом семействе машин есть предварительно определенные формы, которые иметь определенное соотношение виртуальных ЦП к объему памяти, которое соответствует различным потребностям рабочих нагрузок. Если предопределенный тип машины не соответствует вашим потребностям, вы можете создать собственный машина для любой универсальной ВМ.
Попробуйте сами
Если вы новичок в Google Cloud, создайте учетную запись, чтобы оценить, как Compute Engine работает в реальном мире сценарии.Новые клиенты также получают 300 долларов в качестве бесплатных кредитов для запуска, тестирования и развертывать рабочие нагрузки.
Попробуйте Compute Engine бесплатноБиллинг
Вам выставляется счет за ресурсы, которые использует виртуальная машина.Когда вы создаете виртуальную машину, вы выбираете тип машины для экземпляра и оплачиваете, как описано на странице цен на инстансы ВМ. Конкретно, вам выставляется счет за каждый виртуальный ЦП и ГБ памяти отдельно, как описано в модель биллинга на основе ресурсов. Действующие скидки, например скидки на длительное использование и скидки на обязательное использование подать заявление.
Чтобы увидеть расчетные почасовые и ежемесячные затраты для каждого типа машины, см. Цены на инстансы ВМ.
Категории семейств машин
Семейство универсальных машин предлагает различные типы машин с лучшим соотношением цены и качества для разнообразие рабочих нагрузок.
- Оптимизированные по стоимости виртуальные машины E2 предлагают до 32 виртуальных ЦП и до 128 ГБ памяти, максимум 8 ГБ на виртуальный ЦП. Виртуальные машины E2 имеют предопределенная платформа ЦП, на которой работает либо процессор Intel, либо второй поколения процессора AMD EPYC Rome, которое выбрано для вас в свое время создания ВМ. Виртуальные машины E2 предоставляют различные вычислительные ресурсы для самая низкая цена на Compute Engine, особенно в сочетании с скидки за обязательное использование. Виртуальные машины
- N2 предлагают до 80 виртуальных ЦП, 8 ГБ памяти на каждый виртуальный ЦП и доступно на платформе ЦП Intel Cascade Lake.
- ВМ N2D предлагают до 224 виртуальных ЦП, 8 ГБ памяти на каждый виртуальный ЦП и доступно на платформах AMD EPYC Rome второго поколения. Виртуальные машины
- N1 предлагают до 96 виртуальных ЦП, 6,5 ГБ памяти на каждый виртуальный ЦП и доступно на Intel Sandy Bridge, Ivy Bridge, Haswell, Broadwell и Skylake Платформы ЦП.
ВМ с общим ядром доступны для E2 и N1 в семействе общего назначения. Эти Виртуальные машины используют таймшер для физического ядра. Это может быть рентабельным методом. для запуска небольших не ресурсоемких приложений.
- E2:
e2-micro
,e2-small
иe2-medium
виртуальные машины с общим ядром 2 виртуальных ЦП доступны на короткие периоды разрыва. - N1:
f1-micro
иg1-small
виртуальные машины с общим ядром имеют до 1 виртуального ЦП доступны в течение коротких периодов взрыва.
Семейство компьютеров , оптимизированных для вычислений предлагает самую высокую производительность на ядро в Compute Engine и оптимизирован для рабочих нагрузок с интенсивными вычислениями. Оптимизированные для вычислений виртуальные машины работают на масштабируемом процессоре Intel (Cascade Lake) и выдержать до 3.Все ядра в турбо-режиме 8 ГГц.
Семейство машин с оптимизацией памяти предлагает виртуальные машины, которые идеально подходят для рабочих нагрузок с интенсивным использованием памяти. ВМ с оптимизацией памяти предлагают больше памяти на ядро, чем любое другое семейство машин, с объемом до 12 ТБ объем памяти.
Семейство машин , оптимизированных для ускорителей идеально подходит для вычислительных рабочих нагрузок с массовым распараллеливанием Compute Unified Device Architecture (CUDA), такие как машинное обучение (ML) и высокопроизводительные вычисления (HPC). Виртуальные машины, оптимизированные для ускорителей, являются оптимальным выбором для рабочих нагрузок, для которых требуются графические процессоры.
Рекомендации для семейств машин
См. Рекомендации по ВМ чтобы узнать, как правильно выбрать виртуальную машину для вашей рабочей нагрузки.
В следующей таблице приведены рекомендации виртуальных машин для различных рабочих нагрузок.
Общего назначения | Оптимизированная рабочая нагрузка | |||
---|---|---|---|---|
Оптимизация затрат | Сбалансированный | с оптимизацией для памяти | Оптимизировано для вычислений | Оптимизированный для ускорителя |
E2 | N2, N2D, N1 | М2, М1 | C2 | A2 |
Ежедневные вычисления по более низкой цене | Сбалансированное соотношение цены и производительности для широкого диапазона форм виртуальных машин | Рабочие нагрузки со сверхвысоким объемом памяти | Сверхвысокая производительность для рабочих нагрузок с интенсивными вычислениями | Оптимизирован для высокопроизводительных вычислительных рабочих нагрузок |
|
Сравнение семейств машин
Используйте следующую таблицу для сравнения каждой категории семейства машин и определения какой из них подходит для вашей рабочей нагрузки.Если после просмотра этого раздела, вы все еще не уверены, какое семейство машин лучше всего подходит для вашей рабочей нагрузки, начните с универсальная машина. См. Платформы ЦП для получения подробной информации о все поддерживаемые процессоры.
Чтобы узнать, как выбранная вами виртуальная машина влияет на производительность постоянных дисков. подключены к вашим виртуальным машинам, см. Настройка постоянных дисков и виртуальных машин.
Семейства машин | виртуальных ЦП | Память (на виртуальный ЦП) | Процессоры | Пользовательские ВМ | Локальные SSD | Постоянные скидки | вытесняемые виртуальные машины |
---|---|---|---|---|---|---|---|
общего назначения E2 1 | 2–32 | 0.5–8 ГБ 2 |
| Есть | № | № | Есть |
E2 с общим ядром 1 | 0,25–1 | 0,5–8 ГБ |
| Есть | № | № | Есть |
Общего назначения N2 | 2–80 | 0.5–8 ГБ | Есть | Есть | Есть | Есть | |
Универсальный N2D 3 | 2–224 | 0,5–8 ГБ | Есть | Есть | Есть | Есть | |
Общего назначения N1 | 1–96 | 0,95–6,5 ГБ |
| Есть | Есть | Есть | Есть |
Общее ядро N1 | 0.2–0,5 | 3,0–3,4 ГБ |
| № | № | Есть | Есть |
C2 Оптимизированный для вычислений | 4–60 | 4 ГБ | № | Есть | Есть | Есть | |
M1 Megamem с оптимизацией памяти | 96 | 14.9 ГБ | № | Есть | Есть | Есть | |
M1 Ultramem с оптимизацией памяти | 40–160 | 28,3 ГБ | № | № | Есть | Есть | |
M2 Ultramem с оптимизацией памяти | 208–416 | 28,3 ГБ | № | № | Есть | № | |
A2 Оптимизированный для ускорителя high-gpu | 12–96 | 7 ГБ | № | Есть | № | Есть | |
A2 Мега-графический процессор, оптимизированный для ускорителей | 96 | 14 ГБ | № | Есть | № | Есть |
1 Для виртуальных машин E2 ваш процессор выбран за вас.
2 ВМ E2 поддерживают до 128 ГБ общей памяти.
3 Стандартные и высокопроизводительные виртуальные машины N2D имеют до 224 виртуальных ЦП.
графические процессоры и виртуальные машины
Графические процессорыиспользуются для ускорения и рабочих нагрузок. Вы можете подключать графические процессоры только к универсальные виртуальные машины N1 или оптимизированные для ускорителя виртуальные машины A2. Графические процессоры не поддерживаются другими семействами машин.
виртуальных машин с меньшим количеством графических процессоров ограничено максимальным количеством виртуальных ЦП. В как правило, большее количество графических процессоров позволяет создавать экземпляры с большим количеством виртуальных ЦП и памяти.Для получения дополнительной информации см. Графические процессоры на Compute Engine.
Что дальше?
.- Фото гигиенического душа в туалете: Гигиенический душ в туалете – фото, идеи для гигиенического душа в интерьере
- Силиконовый уплотнитель для окон: Страница не найдена — Открой Окно!