Волма слой характеристики: Штукатурка гипсовая Волма Слой 30 кг

Содержание

Штукатурка гипсовая Волма Слой 30 кг

Марка
ВОЛМА

Вес нетто (кг)
30.0

Расход кг/м² при толщине слоя 10 мм
9.0

Основной материал
Гипс

Тип применения
Вручную

Место использования
Внутренний

Материал поверхности применения
Кирпич

Размер фракции (мм)
1. 25

Минимальная толщина слоя (мм)
5.0

Максимальная толщина слоя (мм)
60.0

Жизнеспособность раствора (ч)
0.75

Время полного высыхания (ч)
168.0

Время до начала эксплуатации (дней)
7.0

Минимальная температура применения (°C)
5.0

Максимальная температура применения (°C)
30. 0

Количество воды (л/кг)
0.65

Адгезия (МПа)
0,3

Прочность на сжатие (МПа)
2.0

Цвет
Серый

Страна производства
Россия

Штукатурка гипсовая Волма Слой 30 кг

Марка
ВОЛМА

Вес нетто (кг)
30. 0

Расход кг/м² при толщине слоя 10 мм
9.0

Основной материал
Гипс

Тип применения
Вручную

Место использования
Внутренний

Материал поверхности применения
Кирпич

Размер фракции (мм)
1.25

Минимальная толщина слоя (мм)
5. 0

Максимальная толщина слоя (мм)
60.0

Жизнеспособность раствора (ч)
0.75

Время полного высыхания (ч)
168.0

Время до начала эксплуатации (дней)
7.0

Минимальная температура применения (°C)
5.0

Максимальная температура применения (°C)
30.
0

Количество воды (л/кг)
0.65

Адгезия (МПа)
0,3

Прочность на сжатие (МПа)
2.0

Цвет
Серый

Страна производства
Россия

свойства и технические характеристики, инструкция по нанесению

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

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

Оглавление:

  1. Отличия от конкурентов
  2. Технология покрытия
  3. Расчет расхода Волма
  4. Что советуют специалисты?

Работы проводятся с учетом общепринятых строительных нормативов, в частности — раствор замешивается и расходуется в условиях нормальной влажности (до 50 %) и при температуре от 5 до 30 °C, для полного высыхания слоя выдерживается 5–7 суток, помещение обязательно вентилируется.

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

Особенности

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

Пошаговая инструкция по нанесению штукатурки

Процесс происходит в такой последовательности:

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

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

3. Приготовление раствора. На этом этапе очень важно соблюдать пропорции, указанные в инструкции: на 1 кг сухого порошка Волма требуется 0,6–0,65 л воды, имеющей комнатную температуру. Штукатурка доводится до однородного состояния, стоит не более 2–3 минут и помешивается еще раз, после чего сразу же используется для работы. Специалисты рекомендуют делать первое размешивание с чуть меньшим количеством воды и добавлять ее до нужной консистенции при повторном включении миксера.

4. Нанесение состава на поверхность. Согласно инструкции, это следует сделать в течение 20 минут после приготовления, рекомендуемая толщина слоя — от 5 до 60 мм. Кельма должна быть чистой, после остановки для нового замешивания она промывается водой.

5. Разглаживание и разравнивание штукатурки. Для быстрой работы с Волма Слой на вертикальных поверхностях лучше всего подойдет h-образное правило, для создания толстых фактур — зубчатый штукатурный гребень.

6. Устранение перепадов (подрезка). Проводится через 30–40 минут после затворения раствора, излишки срезаются с помощью трапециевидного правила, прикладываемого перпендикулярно к основанию, углубления заполняются свежей порцией.

7. Затирка гипсовой штукатурки влажной губкой. Производится через 10–20 минут после выравнивания, при достижении гладкой матовой поверхности окончательно заглаживается широким шпателем. Или выжидается как минимум 3 часа (но не более суток) и штукатурка смачивается и обрабатывается металлической гладилкой.

8. Декорирование: создание рельефного узора или окраска. В первом случае нужны специальные фигурные валики, кисти или шпатель, работы проводятся сразу же за размачиванием (то есть не далее 3 часов после нанесения штукатурки). Во втором выжидается около 5–7 суток, это же касается тех вариантов, когда Волма Слой применяется в качестве выравнивающего слоя под обои или плитку.

Расход смеси на 1 м2

Замешивать ее рекомендуется с расчетом максимально быстрого использования (не более 1–1,5 кг). Согласно инструкции, расход воды составляет 0,6–0,65 л на 1 кг сухой смеси. В раствор не вводятся никакие посторонние примеси или добавки (все нужные химические модификаторы уже присутствуют в Волме), хотя существует мнение, что пара капель жидкого мыла может продлить время застывания.

Средний расход штукатурки на 1 м2 при наносимом слое в 1 см равен 8–9 кг. Оптимальная толщина — от 5 до 30 мм, максимально допустимая — 60. При подготовке стен под обои или плитку, расход смеси минимальный, при создании фактурной облицовки или декоративных элементов он возрастает.

Условия хранения

Чувствительность Волма Слой к воздействию влаги очень высока, материал следует всячески охранять от сырости. Она продается в мешках с фирменной упаковкой по 5, 15, 35 и 30 кг, в открытом состоянии долго не хранится. В нераспакованном виде срок годности составляет 1 год, для работы лучше покупать как можно более свежие смеси, держать их в неподходящем помещении недопустимо. Рекомендуется складывать мешки с гипсовой штукатуркой на деревянные поддоны, размещенные в сухом месте (ни в коем случае нельзя оставлять их просто на земле).

Советы и рекомендации по использованию штукатурки Волма Слой:

  • Из-за быстрого отвердевания раствор замешивают небольшими порциями.
  • Адгезивные свойства Волмы проявляются исключительно при работе с чистыми поверхностями, в противном случае она отслаивается.
  • Для качественного застывания следует обеспечить естественную вентиляцию.
  • Согласно инструкции, второй слой штукатурки разрешено наносить только после полного высыхания предыдущего.
  • Составы Волма плохо переносят покраску водно-дисперсионными красками, для финишной отделки лучше выбрать другой вариант.

 

Штукатурка Волма-слой 30 кг — Штукатурки Волма — Стройматериалы

Область применения

Выравнивание стен и потолков под облицовку керамической плиткой, оклейку обоями и покраску без дополнительного шпаклевания. Изготовление декоративных элементов. Проведение реставрационных работ. Гипсовая штукатурка «ВОЛМА-СЛОЙ» применяется внутри помещений с нормальной влажностью и температурой от +5 до +30°С.

Подходит для оснований:

Бетон, кирпич, цементно-известковые штукатурки, гипсовые блоки и плиты, газо- и пенобетон, ГКЛ, ГВЛ.

Подготовка основания

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

Сильно впитывающие основания обработать грунтовкой «ВОЛМА-Универсал», «ВОЛМА-Интерьер». Для повышения прочности сцепления штукатурной смеси с бетонными основаниями, обработать их грунтовкой «ВОЛМА-Контакт».

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

Приготовление раствора

На 1 кг сухой смеси добавляется 0,6-0,65 л воды. В чистую пластмассовую емкость, наполненную чистой водой комнатной температуры, засыпать сухую смесь и перемешать до однородной массы профессиональным миксером или дрелью с насадкой. Дать отстояться раствору 2-3 минуты. При необходимости добавить сухую смесь или воду для получения нужной консистенции, и снова перемешать.

Нанесение

В течение 20 минут с момента затворения, полученный раствор нанести на поверхность слоем толщиной 5-60 мм с помощью штукатурного сокола или набрасывая кельмой.

Разравнивание

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

Подрезка

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

Заглаживание

Для получения идеально гладкой поверхности, спустя 10-20 минут после подрезки, штукатурку затереть губчатой теркой, обильно смоченной водой. После чего, дождавшись появления матовой поверхности, загладить штукатурку широким металлическим шпателем.

Условия хранения

Мешки с сухой штукатурной смесью «ВОЛМА-Слой» хранить на деревянных поддонах в сухих помещениях. Смесь из поврежденных мешков пересыпать в целые мешки и использовать в первую очередь.

Гарантийный срок хранения в неповрежденной фирменной упаковке 12 месяцев.

10+ VOLMA-LAYER PLASTER TOP поставщики из 🇷🇺 Россия, Казахстан [2021]

Экспортная российская штукатурка волма-слоистая:

Елена Еременко
менеджер по логистике в ЕС, Азия

логистика, сертификат
электронная почта: [электронная почта защищена]

Российский гипсовый продукт Волма-Лайер

🇷🇺 ТОП Экспортер штукатурки Волма-Лайер из РФ

штукатурка Волма-Лайер компаний-производителей Вы много покупаете эту продукцию:

Поставщик

Товар из России

  • Сухая штукатурная смесь для гипсового вяжущего ВОЛМА-Слой 45 2. 0
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Лайер Титан 45 2,0
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Лайер 45 2,0 ТУ 5745-002-78667917-2005
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Лайер Ультра 30 2,0 ТУ 5745-002-78667917-2005
  • Смесь штукатурная сухая на гипсовом вяжущем ВОЛМА-Слой Титан 45 2,0 ТУ 5745-002-78667917-2005
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Лайер 45 2,0
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Лайер Титан 45 2.0
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Лайер 45 2,0 ТУ 5745-002-78667917-2005
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Лайер Титан 45 2,0 ТУ 5745-002-78667917-2005
  • Сухая штукатурная смесь на гипсовое вяжущее ВОЛМА-Лайер Ультра 30 2.0 ТУ 5745-002-78667917-2005
  • Штукатурка основная, адгезионно-цементная вяжущее для фасадных теплоизоляционных композитных систем с наружными слоями штукатурки, В7. 5, БТБ3.2, Ааб5, Ф75 ВОЛМА- Термоизоляционные композитные системы Thermofasad
  • с наружными слоями штукатурки, В7,5, Вtb3,2, Аab5, F100 ВОЛМА-Термофасад
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Слой 45 2.0
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Лайер 45 2,0 ТУ 5745-002-78667917-2005
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Лайер Ультра 30 2,0 ТУ 5745-002-78667917-2005
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Лайер 45 2,0
  • Сухая штукатурная смесь на гипсовом вяжущем ВОЛМА-Лайер 45 2,0 ТУ 5745-002-78667917-2005
  • Декоративный состав на белом портландцементе для фасадных теплоизоляционных композитных систем с внешней штукатуркой слои, неокрашенные В5, Вtb2, 4, Aab2, F75, ВОЛМА-Шуба
  • Декоративный состав на белом портландцементе для утепления фасадов композитных систем с наружными штукатурными слоями, неокрашенный В5, Вtb2,4, Aab2, F75, ВОЛМА-Короед
  • фасадные композитные системы теплоизоляции с наружными слоями штукатурки, В7,5, Вtb3,2, Аab5, F75 ВОЛМА-Термофасад

    гидросфера | Характеристики, слои и примеры

    Гидросфера , прерывистый слой воды на поверхности Земли или вблизи нее. Он включает в себя все жидкие и замороженные поверхностные воды, подземные воды, содержащиеся в почве и горных породах, и атмосферный водяной пар.

    Сферы окружающей среды Земли

    Окружающая среда Земли включает атмосферу, гидросферу, литосферу и биосферу.

    Encyclopædia Britannica, Inc.

    Вода — самое распространенное вещество на поверхности Земли. Около 1,4 миллиарда кубических километров (326 миллионов кубических миль) воды в жидкой и замороженной форме составляют океаны, озера, ручьи, ледники и подземные воды.Именно этот огромный объем воды в ее различных проявлениях образует прерывистый слой, охватывающий большую часть земной поверхности, известный как гидросфера.

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

    Обзор того, как вода в ее различных фазах течет через гидрологический или водный цикл.

    Encyclopædia Britannica, Inc. Посмотреть все видео к этой статье

    Центральным элементом любого обсуждения гидросферы является концепция круговорота воды (или гидрологического цикла). Этот цикл состоит из группы резервуаров, содержащих воду, процессов, посредством которых вода передается из одного резервуара в другой (или преобразования из одного состояния в другое), и скоростей передачи, связанных с такими процессами. Эти пути передачи пронизывают всю гидросферу, простираясь вверх примерно до 15 км (9 миль) в атмосфере Земли и вниз до глубины порядка 5 км (3 миль) в ее коре.

    гидрологический цикл

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

    Encyclopædia Britannica, Inc.

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

    Оформите подписку Britannica Premium и получите доступ к эксклюзивному контенту. Подпишитесь сейчас

    Распределение и количество вод Земли

    Океанские воды и воды, захваченные в поровых пространствах отложений, составляют большую часть современной гидросферы.Общая масса воды в океанах составляет около 50 процентов от массы существующих осадочных пород и около 5 процентов от массы земной коры в целом. Глубокие и мелкие грунтовые воды составляют небольшой процент от общего количества воды, запертой в порах осадочных пород — порядка 3–15 процентов. Количество воды в атмосфере в любой момент времени незначительно и эквивалентно примерно 13 000 кубических километров (примерно 3100 кубических миль) жидкой воды, или примерно 0,001 процента от общего количества на поверхности Земли. Однако эта вода играет важную роль в круговороте воды.

    Водные массы у поверхности Земли
    резервуар объем (в кубических километрах) процентов от общего количества
    * В виде жидкого эквивалента водяного пара.
    ** Сумма превышает 100 процентов из-за округления в сторону увеличения объемов отдельных резервуаров.
    Источник: адаптировано из главы Игоря Шикломанова «Мировые ресурсы пресной воды» в книге Питера Х.Gleick (ed.), Water in Crisis: A Guide to the World’s Fresh Water Resources, copyright 1993, Oxford University Press, New York, N.Y. Таблица предоставлена ​​Геологической службой США.
    океаны 1,338,000,000 96,5
    ледяные шапки, ледники и вечный снег 24 064 000 1,74
    гололед и вечная мерзлота 300 000 0,22
    подземные воды (всего) 23 400 000 1. 69
    подземные воды (пресные) 10 530 000 0,76
    подземные воды (соленые) 12 870 000 0,93
    озера (всего) 176 400 0,013
    озера (пресные) 91 000 0,007
    озера (соленые) 85 400 0,006
    влажность почвы 16 500 0.001
    атмосфера * 12 900 0,001
    болотная вода 11 470 0,0008
    р. 2,120 0,0002
    биота 1,120 0,0001
    итого ** 1,409 560 910 101,67

    В настоящее время лед покрывает чуть более 2 процентов воды на Земле и, возможно, составлял до 3 процентов или более во время пика оледенений эпохи плейстоцена (2. От 6 миллионов до 11700 лет назад). Хотя запасы воды в реках, озерах и атмосфере небольшие, скорость циркуляции воды в системе дождь-река-океан-атмосфера относительно высока. Количество воды, сбрасываемой каждый год в океаны с суши, приблизительно равно общей массе воды, накопленной в любой момент в реках и озерах.

    Влага почвы составляет всего 0,005 процента воды на поверхности Земли. Однако именно это небольшое количество воды оказывает самое непосредственное влияние на испарение с почвы.Биосфера, хотя в основном по составу H 2 O, содержит очень мало воды на земной поверхности, всего около 0,00004 процента, но биосфера играет важную роль в переносе водяного пара обратно в атмосферу в результате этого процесса. испарения.

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

    Какие типы слоев в Photoshop?

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

    1. Слои изображений

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

    2. Корректирующие слои

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

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

    3. Слои заливки

    Чтобы добавить слой заливки, например градиент для затемнения или оттенка фона неба, выберите «Слои> Новый слой заливки> Градиент». Если вы установите для одной из точек градиента значение «Прозрачный», часть слоя заливки будет иметь прозрачное качество.

    4. Типовые слои

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

    5.Слои смарт-объектов

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

    Вдохните жизнь в ваши изображения

    Хотя команды слоев Photoshop впечатляют, ключ к потрясающим фотографиям — ваше воображение. Вдохновитесь последними тенденциями дизайна и найдите свою идеальную стоковую фотографию или изображение на Shutterstock.com.

    Характеристики тонкослойной сушки и моделирование китайских мармеладов

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

    1. Введение

    Зизифус ( Zizyphus jujuba Mill.) — характерный китайский фрукт, площадь выращивания которого в Китае достигла более 1,5 миллиона гектаров. Кроме того, из мармелада перерабатывается множество продуктов, таких как засахаренные и выпитые мармелад, чай, сок и сахар. Подавляющее большинство мармеладов сушат и продают дома и за границей, за исключением небольшой части, предназначенной для употребления в свежем виде [1].Джужуба играет важную роль в питании человека как источник сахара, витаминов, белка и минералов [2]. На протяжении тысяч лет мармелад не только использовался в пищу, но и широко использовался в традиционной китайской медицине. Джужубы имеют тенденцию портиться из-за высокого содержания влаги, что приводит к потерям продукции на 25–30% после сбора урожая [3]. Сушка — один из широко используемых методов послеуборочной консервации сельскохозяйственной продукции. Он используется для значительного снижения влажности, снижения микробиологической активности и обеспечения сохранности продукта при температуре окружающей среды [4, 5].Сухие продукты имеют более длительный срок хранения в упаковке и более низкие затраты на транспортировку, обращение и хранение [6].

    Сушка — это сложный процесс, связанный с одновременным тепломассообменом, при котором вода переносится диффузией изнутри пищевого материала к поверхности раздела воздух-еда и от границы раздела к воздушному потоку посредством конвекции [7, 8]. Количество энергии, необходимое для сушки продукта, зависит от многих факторов, таких как начальная влажность, желаемая конечная влажность, а также температура и скорость сушильного воздуха [9].Сушка тонкого слоя означает сушку в виде одного слоя частиц или ломтиков образца. Уравнения сушки тонкого слоя использовались для прогнозирования времени сушки для обобщения кривых сушки [10]. Различные математические модели, описывающие характеристики сушки различных фруктов и овощей, были предложены для оптимизации процесса сушки и разработки эффективных сушилок [11, 12]. Существует множество исследований по сушке фруктов и овощей, таких как абрикос [13], банан [14], морковь [15], инжир [16], золотые яблоки, виноград [17], зеленый перец, фаршированный перец, зеленая фасоль. [18], личи [19], грибы, фисташки [20], лук [21] и тыква [22].Несколько исследователей исследовали кинетику сушки различных сельскохозяйственных продуктов, чтобы оценить модель распределения Вейбулла для описания характеристик сушки тонких слоев [23, 24]. Кроме того, некоторые исследователи предложили сушильные свойства и технологии обработки мармелада [25–28]. Модель Хендерсона и Пабиса (см. Таблицу 2) применялась при сушке мармеладов [29]; однако, хотя эта модель может описывать кривую сушки для конкретных условий экспериментов, она не может дать ясное и точное представление о важных процессах во время сушки.

    Цели данного исследования: (1) определить влияние температуры и скорости воздуха на сушку мармелада и получить кривые сушки; (2) разработать математическую модель для прогнозирования характеристик сушки тонкого слоя при конвекционной сушке мармеладов при различных условиях температуры и скорости осушающего воздуха.

    2. Материалы и методы
    2.1. Материалы

    Жужуба Биоэр — один из основных китайских сортов мармелада, который в основном растет в провинциях Шаньси и Синьцзян.Жужуба Bioer, использованная в экспериментах, была произведена в городе Алар, провинция Синьцзян, и была выбрана в качестве сушильного материала в сентябре 2010 года. Внешний вид мармеладов представлен на Рисунке 1. Образцы одного и того же вида с полной зрелостью и однородным размером хранили в холодильник при 4 ° C перед началом экспериментов. Начальное содержание влаги составляло около 70,12% влажной массы (масс.).

    2.2. Лабораторная сушилка

    Эксперименты по сушке проводились в лабораторной сушилке (BG-II), изготовленной в Колледже биологической и сельскохозяйственной инженерии Университета Цзилинь, город Чанчунь, провинция Цзилинь.Схематический вид экспериментальной установки показан на рисунке 2.


    Габаритные размеры сушилки составляют 2,2 × 0,6 × 1,8 м, и она в основном состоит из вентилятора, электрического нагревателя, сушильной камеры и блока контроля температуры и влажности. . Оптимальная скорость осушающего воздуха, обеспечиваемая вентилятором, может изменяться с помощью электродвигателя без уровня. Анемометр диапазона 0–15 м / с (LUTRON, AM-4201, Тайвань) измеряет скорость воздуха, проходящего через систему. Температура осушающего воздуха автоматически регулировалась путем регулирования необходимого напряжения на нагревателях внутри воздушного канала.Нагреватель состоял из четырех групп проводов сопротивления по 1000 Вт, и каждую группу можно было использовать независимо для контроля температуры (30–110 ° C, температура по сухому термометру) воздуха и в сушильной камере. Температуру сухого термометра внутри сушильной камеры измеряли и контролировали с точностью ± 0,1 ° C с помощью термометра Pt 100, 1/10 DIN, вставленного в среднее положение входного поперечного сечения. Датчик температуры-влажности (GALLTEC, TFK80J, Германия) использовался для измерения относительной влажности с точностью ± 3% относительной влажности.Провода сопротивления включались и выключались блоком управления в зависимости от изменения температуры для поддержания установленной температуры на одном уровне во время экспериментов. Для измерения потери влаги в образцах использовали цифровые электронные весы (OHAUS, CP3102, США) в диапазоне измерения 0–3100 г с точностью 0,01 г.

    2.3. Процедуры сушки

    Эксперименты по сушке проводились при различных температурах сушки 45, 55 и 65 ° C и различных скоростях 0,5, 1,0 и 2,0 м / с.Температуру воздуха для сушки автоматически регулировали на уровне ± 1 ° C с помощью электрического нагревательного устройства, а скорость воздуха измеряли анемометром с точностью 0,1%.

    Сушилке потребовалось некоторое время, чтобы достичь желаемого значения после запуска. Примерно 200 г образцов помещали в ведро с сеткой из нержавеющей стали диаметром 200 мм, а затем после взвешивания помещали в сушилку. Во всех экспериментах образцы сохранялись одинаковой толщины и укладывались в слои.Интервал взвешивания образцов сушки в процессе сушки составлял 1 ч. Поскольку процесс взвешивания занял всего несколько секунд, никаких серьезных помех не возникло. В соответствии со стандартами, установленными Главным управлением по надзору за качеством, инспекциям и карантину (AQSIQ) [30], процесс сушки продолжался до тех пор, пока содержание влаги в образцах не достигло уровня ниже 25% (масс. ). После экспериментов по сушке образцы помещали в электрическую сушильную печь с постоянной температурой, поддерживающую температуру 105 ± 2 ° C, пока их вес не оставался неизменным.Этот вес был использован для расчета содержания влаги в образцах.

    2.4. Экспериментальная неопределенность

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


    Параметр Единица Комментарий

    Температура на входе вентилятора ° C ± 0,5
    Температура на выходе нагревателя ° C ± 0,5
    Температура на входе в сушильную камеру ° С ± 0. 3
    Температура на выходе из сушильной камеры ° C ± 0,3
    Температура окружающего воздуха ° C ± 0,3
    Вход вентилятора с сухим и влажным термометрами ° C ± 0,5
    Значения потери массы мин ± 0,1
    Значения температуры мин ± 0.1
    Погрешность измерения потери массы г ± 0,5
    Погрешность измерения скорости воздуха м / с ± 0,14
    Измерение относительной влажности воздуха RH ± 0,1
    Погрешность измерения количества влаги г ± 0,001
    Погрешность считывания значений таблицы ( ρ , ср. )% ± 0,1-0,2

    (474) —

    Теоретические соображения и математическая формулировка

    Содержание влаги в мармеладе во время экспериментов по сушке тонкого слоя было выражено в безразмерной форме как отношение влажности MR с помощью следующего уравнения [32, 33]: — среднее содержание влаги в мармеладе, — исходное значение, — равновесная влажность. Скорость высыхания мармелада была рассчитана с использованием (2.2) [34, 35]

    Создание новых слоев и моделей с помощью подкласса

    Автор: fchollet
    Дата создания: 2019/03/01
    Последнее изменение: 2020/04/13
    Описание: Полное руководство по написанию объектов Layer и Model с нуля.

    Просмотр в Colab Исходный код GitHub


    Настройка

      импортировать тензорный поток как tf
    из tenorflow import keras
      

    Класс Layer : комбинация состояния (весов) и некоторых вычислений

    Одной из центральных абстракций в Керасе является класс Layer .Слой инкапсулирует как состояние («веса» слоя), так и преобразование из входы в выходы («вызов», прямой проход уровня).

    Вот плотно связанный слой. У него есть состояние: переменные w и b .

      класс Линейный (keras.layers.Layer):
        def __init __ (self, units = 32, input_dim = 32):
            super (Линейный, сам) .__ init __ ()
            w_init = tf.random_normal_initializer ()
            self.w = tf.Variable (
                начальное_значение = w_init (shape = (input_dim, units), dtype = "float32"),
                trainable = True,
            )
            b_init = tf.zeros_initializer ()
            self.b = tf.Variable (
                initial_value = b_init (shape = (units,), dtype = "float32"), trainable = True
            )
    
        вызов def (self, вводы):
            return tf.matmul (входы, self.w) + self.b
      

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

      x = tf.ones ((2, 2))
    linear_layer = Линейный (4, 2)
    y = линейный_уровень (x)
    печать (у)
      
      тф.Тенсор (
    [[0,01013444 -0,01070027 -0.01888977 0,05208318]
     [0,01013444 -0,01070027 -0,01888977 0,05208318]], shape = (2, 4), dtype = float32)
      

    Обратите внимание, что веса w и b автоматически отслеживаются слоем при устанавливается как атрибуты слоя:

      assert linear_layer. weights == [linear_layer.w, linear_layer.b]
      

    Обратите внимание, что у вас также есть доступ к более быстрому ярлыку для добавления веса к слою: метод add_weight () :

      класс Linear (keras.Layers.Layer):
        def __init __ (self, units = 32, input_dim = 32):
            super (Линейный, сам) .__ init __ ()
            self.w = self.add_weight (
                shape = (input_dim, units), initializer = "random_normal", trainable = True
            )
            self.b = self.add_weight (shape = (units,), initializer = "zeros", trainable = True)
    
        вызов def (self, вводы):
            return tf.matmul (входы, self.w) + self.b
    
    
    х = tf.ones ((2, 2))
    linear_layer = Линейный (4, 2)
    y = линейный_уровень (x)
    печать (у)
      
      тс.Тензор(
    [[-0,01331179 -0,00605625 -0,01042787 0,17160884]
     [-0.01331179 -0.00605625 -0.01042787 0.17160884]], shape = (2, 4), dtype = float32)
      

    Слои могут иметь нетренируемые веса

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

    Вот как добавить и использовать нетренируемый вес:

      класс ComputeSum (keras.Layers.Layer):
        def __init __ (self, input_dim):
            super (ComputeSum, self) .__ init __ ()
            self.total = tf.Variable (initial_value = tf.zeros ((input_dim,)), trainable = False)
    
        вызов def (self, вводы):
            self.total.assign_add (tf.reduce_sum (входы, ось = 0))
            вернуть self.total
    
    
    х = tf.ones ((2, 2))
    my_sum = ComputeSum (2)
    у = моя_сумма (х)
    печать (y.numpy ())
    у = моя_сумма (х)
    печать (y.numpy ())
      

    Это часть слоя , весит , но он классифицируется как необучаемый вес:

      print ("веса:", len (my_sum.веса))
    print ("необучаемые веса:", len (my_sum.non_trainable_weights))
    
    # Это не входит в тренируемые веса:
    print ("trainable_weights:", my_sum.trainable_weights)
      
      весов: 1
    нетренируемые веса: 1
    trainable_weights: []
      

    Лучшая практика: отложить создание веса до тех пор, пока не станет известна форма входных данных

    Наш слой Linear выше принял аргумент input_dim , который использовался для вычисления форма грузов w и b in __init __ () :

      класс Linear (keras. Layers.Layer):
        def __init __ (self, units = 32, input_dim = 32):
            super (Линейный, сам) .__ init __ ()
            self.w = self.add_weight (
                shape = (input_dim, units), initializer = "random_normal", trainable = True
            )
            self.b = self.add_weight (shape = (units,), initializer = "zeros", trainable = True)
    
        вызов def (self, вводы):
            return tf.matmul (входы, self.w) + self.b
      

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

    В Keras API мы рекомендуем создавать веса слоев в сборке (self, input_shape) метод вашего слоя. Как это:

      класс Линейный (keras.layers.Layer):
        def __init __ (self, units = 32):
            super (Линейный, сам) .__ init __ ()
            self.units = единицы
    
        def build (self, input_shape):
            self.w = self.add_weight (
                shape = (input_shape [-1], self. units),
                initializer = "random_normal",
                trainable = True,
            )
            я.b = self.add_weight (
                shape = (self.units,), initializer = "random_normal", trainable = True
            )
    
        вызов def (self, вводы):
            return tf.matmul (входы, self.w) + self.b
      

    Метод __call __ () вашего слоя автоматически запустит сборку при первом запуске. это называется. Теперь у вас есть ленивый слой, который проще в использовании:

      # При инстанциации мы не знаем, на каких входах это будет вызвано
    linear_layer = Линейный (32)
    
    # Веса слоя создаются динамически при первом вызове слоя
    y = линейный_уровень (x)
      

    Слои рекурсивно компонуются

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

    Мы рекомендуем создавать такие подслои в методе __init __ () (т.к. подслои обычно имеют метод сборки, они будут построены, когда внешний слой строится).

      # Предположим, мы повторно используем класс Linear
    # с методом `build`, который мы определили выше.
    
    
    класс MLPBlock (keras.layers.Layer):
        def __init __ (сам):
            super (MLPBlock, сам) .__ init __ ()
            self.linear_1 = Линейный (32)
            self.linear_2 = Линейный (32)
            я.linear_3 = Линейный (1)
    
        вызов def (self, вводы):
            x = self.linear_1 (входные данные)
            х = tf.nn.relu (х)
            х = self.linear_2 (х)
            х = tf.nn.relu (х)
            вернуть self.linear_3 (x)
    
    
    mlp = MLPBlock ()
    y = mlp (tf.ones (shape = (3, 64))) # Первый вызов `mlp` создаст веса
    print ("веса:", len (mlp.weights))
    print ("обучаемые веса:", len (mlp.trainable_weights))
      
      вес: 6
    тренируемые веса: 6
      

    Метод add_loss ()

    При написании метода call () слоя вы можете создавать тензоры потерь, которые вы захотите использовать позже, при написании цикла обучения. Это можно сделать вызов self.add_loss (значение) :

      # Слой, который создает потерю регуляризации активности
    класс ActivityRegularizationLayer (keras.layers.Layer):
        def __init __ (self, rate = 1e-2):
            super (ActivityRegularizationLayer, сам) .__ init __ ()
            self.rate = рейтинг
    
        вызов def (self, вводы):
            self.add_loss (self.rate * tf.reduce_sum (входы))
            возврат входов
      

    Эти потери (включая потери, создаваемые любым внутренним слоем) могут быть восстановлены через слой.убытки . Это свойство сбрасывается в начале каждого __call __ () на слой верхнего уровня, так что layer.losses всегда содержит значения потерь созданный во время последнего прямого прохода.

      класс OuterLayer (keras.layers.Layer):
        def __init __ (сам):
            super (OuterLayer, self) .__ init __ ()
            self.activity_reg = ActivityRegularizationLayer (1e-2)
    
        вызов def (self, вводы):
            return self. activity_reg (входы)
    
    
    слой = OuterLayer ()
    assert len ​​(layer.loss) == 0 # потерь пока нет, так как слой никогда не вызывался
    
    _ = слой (tf.zeros (1, 1))
    assert len ​​(layer.losses) == 1 # Мы создали одно значение потерь
    
    # `layer.losses` сбрасывается в начале каждого __call__
    _ = слой (tf.zeros (1, 1))
    assert len ​​(layer.losses) == 1 # Это потеря, созданная во время вызова выше
      

    Кроме того, потеря собственности также содержит на вес любого внутреннего слоя:

      класс OuterLayerWithKernelRegularizer (keras.Layers.Layer):
        def __init __ (сам):
            super (OuterLayerWithKernelRegularizer, сам) .__ init __ ()
            self.dense = keras.layers.Dense (
                32, kernel_regularizer = tf.keras.regularizers.l2 (1e-3)
            )
    
        вызов def (self, вводы):
            return self.dense (входы)
    
    
    layer = OuterLayerWithKernelRegularizer ()
    _ = слой (tf.zeros ((1, 1)))
    
    # Это `1e-3 * sum (layer.dense.kernel ** 2)`,
    # созданный выше `kernel_regularizer`. 
    печать (layer.losses)
      
      []
      

    Эти потери следует учитывать при написании обучающих циклов, как это:

      # Создать оптимизатор.
    optimizer = tf.keras.optimizers.SGD (скорость_учения = 1e-3)
    loss_fn = keras.losses.SparseCategoricalCrossentropy (from_logits = True)
    
    # Перебирать пакеты набора данных.
    для x_batch_train, y_batch_train в train_dataset:
      с tf.GradientTape () в качестве ленты:
        logits = layer (x_batch_train) # Логиты для этого мини-пакета
        # Значение потерь для этой мини-партии
        loss_value = loss_fn (y_batch_train, логиты)
        # Добавьте дополнительные потери, созданные во время этого прямого прохода:
        loss_value + = сумма (модель.убытки)
    
      grads = tape.gradient (loss_value, model.trainable_weights)
      optimizer.apply_gradients (zip (grads, model.trainable_weights))
      

    Подробное руководство по написанию обучающих циклов см. В руководство по написанию цикла обучения с нуля.

    Эти потери также работают без проблем с fit () (они автоматически суммируются и добавлен к основному убытку, если есть):

      импортировать numpy как np
    
    входы = keras.Input (shape = (3,))
    output = ActivityRegularizationLayer () (входы)
    модель = керас.Модель (входы, выходы)
    
    # Если в `compile` передается потеря, то регуляризация
    К нему добавляется # убытков
    model.compile (optimizer = "adam", loss = "mse")
    model.fit (np.random.random ((2, 3)), np.random.random ((2, 3)))
    
    # Также возможно не передавать потери в `compile`,
    # поскольку у модели уже есть потери, которые нужно минимизировать, через `add_loss`
    # вызов во время прямого прохода!
    model.compile (optimizer = "adam")
    model.fit (np.random.random ((2, 3)), np.random.random ((2, 3)))
      
      1/1 [==============================] - 0 с 1 мс / шаг - потеря: 0.1555
    1/1 [==============================] - 0 с 927 мкс / шаг - потеря: 0,0336
    
     python.keras.callbacks.History в 0x145bca6d0>
      

    Метод add_metric ()

    Подобно add_loss () , слои также имеют метод add_metric () для отслеживания скользящего среднего количества во время обучения.

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

      класс LogisticEndpoint (keras.layers.Layer):
        def __init __ (self, name = None):
            super (LogisticEndpoint, self) .__ init __ (имя = имя)
            self.loss_fn = keras.losses.BinaryCrossentropy (from_logits = True)
            self.accuracy_fn = keras.metrics.BinaryAccuracy ()
    
        вызов def (self, target, logits, sample_weights = None):
            # Вычислить значение потери времени на обучение и добавить его
            # на слой с помощью `self. add_loss ()`.
            потеря = self.loss_fn (цели, логиты, выборка_весов)
            я.add_loss (убыток)
    
            # Зарегистрируйте точность как метрику и добавьте ее
            # на слой с помощью `self.add_metric ()`.
            acc = self.accuracy_fn (цели, логиты, выборка_весов)
            self.add_metric (acc, name = "precision")
    
            # Возвращает тензор предсказания времени вывода (для `.predict ()`).
            вернуть tf.nn.softmax (логиты)
      

    Отслеживаемые таким образом показатели доступны через layer.metrics :

      слой = LogisticEndpoint ()
    
    target = tf.ones ((2, 2))
    logits = tf.единицы ((2, 2))
    y = слой (цели, логиты)
    
    print ("layer.metrics:", layer.metrics)
    print ("текущее значение точности:", float (layer.metrics [0] .result ()))
      
      layer.metrics: [<объект tensorflow.python.keras.metrics.BinaryAccuracy в 0x145bccdd0>]
    текущее значение точности: 1.0
      

    Как и для add_loss () , эти показатели отслеживаются функцией fit () :

      входов = keras. Input (shape = (3,), name = "inputs")
    target = keras.Входные данные (shape = (10,), name = "target")
    logits = keras.layers.Dense (10) (входные данные)
    прогнозы = LogisticEndpoint (name = "прогнозы") (логиты, цели)
    
    model = keras.Model (входы = [входы, цели], выходы = прогнозы)
    model.compile (optimizer = "adam")
    
    data = {
        "входы": np.random.random ((3, 3)),
        "цели": np.random.random ((3, 10)),
    }
    model.fit (данные)
      
      1/1 [==============================] - 0 с 999 мкс / шаг - потеря: 1,0366 - двоичная_точность: 0,0000 e + 00
    
    
      

    При желании вы можете включить сериализацию на своих слоях

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

      класс Линейный (keras.layers.Layer):
        def __init __ (self, units = 32):
            super (Линейный, сам) . __ init __ ()
            self.units = единицы
    
        def build (self, input_shape):
            self.w = сам.add_weight (
                shape = (input_shape [-1], self.units),
                initializer = "random_normal",
                trainable = True,
            )
            self.b = self.add_weight (
                shape = (self.units,), initializer = "random_normal", trainable = True
            )
    
        вызов def (self, вводы):
            return tf.matmul (входы, self.w) + self.b
    
        def get_config (сам):
            return {"units": self.units}
    
    
    # Теперь вы можете воссоздать слой из его конфигурации:
    слой = Линейный (64)
    config = layer.get_config ()
    печать (конфигурация)
    new_layer = Линейный.from_config (конфигурация)
      

    Обратите внимание, что метод __init __ () базового класса Layer принимает ключевое слово аргументы, в частности имя и dtype . Это хорошая практика. эти аргументы в родительский класс в __init __ () и включить их в Конфигурация слоя:

      класс Линейный (keras. layers.Layer):
        def __init __ (self, units = 32, ** kwargs):
            super (Линейный, сам) .__ init __ (** kwargs)
            я.units = единицы
    
        def build (self, input_shape):
            self.w = self.add_weight (
                shape = (input_shape [-1], self.units),
                initializer = "random_normal",
                trainable = True,
            )
            self.b = self.add_weight (
                shape = (self.units,), initializer = "random_normal", trainable = True
            )
    
        вызов def (self, вводы):
            return tf.matmul (входы, self.w) + self.b
    
        def get_config (сам):
            config = super (Линейный, сам) .get_config ()
            config.обновление ({"единицы": self.units})
            вернуть конфигурацию
    
    
    слой = Линейный (64)
    config = layer.get_config ()
    печать (конфигурация)
    new_layer = Linear.from_config (конфигурация)
      
      {'name': 'linear_8', 'trainable': True, 'dtype': 'float32', 'units': 64}
      

    Если вам нужна большая гибкость при десериализации слоя из его конфигурации, вы также может переопределить метод класса from_config () . Это база реализация from_config () :

      def from_config (cls, config):
      return cls (** config)
      

    Чтобы узнать больше о сериализации и сохранении, см. Полный руководство по сохранению и сериализации моделей.


    Привилегированный обучение аргумент в методе call ()

    Некоторые слои, в частности слой BatchNormalization и Dropout слой, имеют разное поведение во время обучения и вывода. Для таких слоев, стандартной практикой является предоставление обучающего аргумента (логического) в метод call () .

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

      класс CustomDropout (keras.layers.Layer):
        def __init __ (self, rate, ** kwargs):
            super (CustomDropout, self) . __ init __ (** kwargs)
            self.rate = рейтинг
    
        def call (self, inputs, training = None):
            если обучение:
                return tf.nn.dropout (входы, скорость = self.rate)
            возврат входов
      

    Привилегированная маска аргумент в методе call ()

    Другой привилегированный аргумент, поддерживаемый функцией call () , — это аргумент маски .

    Вы найдете его во всех слоях Keras RNN. Маска — это булев тензор (один логическое значение на временной шаг во вводе), используемое для пропуска определенных временных шагов ввода при обработке данных таймсерий.

    Keras автоматически передаст правильный аргумент маски в __call __ () для слои, которые его поддерживают, когда маска создается предыдущим слоем. Слои, генерирующие маски: Embedding слой, настроенный с mask_zero = True и Masking layer.

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


    Модель класс

    Как правило, вы будете использовать класс Layer для определения внутренних вычислительных блоков, и будет использовать класс Model для определения внешней модели — объекта, который вы буду тренироваться.

    Например, в модели ResNet50 у вас будет несколько блоков ResNet подкласс Layer и одну модель , охватывающую весь ResNet50 сеть.

    Класс модели имеет тот же API, что и Layer , со следующими отличиями:

    • Предоставляет встроенные циклы обучения, оценки и прогнозирования ( model.fit () , model.evaluate () , model.predict () ).
    • Он предоставляет список своих внутренних слоев через свойство model.layers .
    • Он предоставляет API сохранения и сериализации ( save () , save_weights () …)

    Фактически, класс Layer соответствует тому, что мы упоминаем в литературу как «слой» (как «сверточный слой» или «повторяющийся слой») или как «блок» (например, «блок ResNet» или «начальный блок»).

    Между тем, класс модели соответствует тому, что упоминается в литература как «модель» (как в «модели глубокого обучения») или как «сеть» (как в «глубокая нейронная сеть»).

    Итак, если вам интересно, «следует ли мне использовать класс Layer или класс Model ?», спросите себя: мне нужно будет на нем звонить по номеру fit () ? Мне нужно будет позвонить по номеру save () в теме? Если да, выберите модель .Если нет (либо потому, что ваш класс — это просто блок в более крупной системе или потому что вы сами пишете обучение и сохраняете код), используйте Layer .

    Например, мы могли бы взять наш приведенный выше пример мини-реснета и использовать его для создания модель , которую мы могли бы тренировать с fit () , и которую мы могли бы сэкономить с save_weights () :

      класс ResNet (tf.keras.Model):
    
        def __init __ (self, num_classes = 1000):
            супер (ResNet, сам). __в этом__()
            self.block_1 = ResNetBlock ()
            self.block_2 = ResNetBlock ()
            self.global_pool = Layers.GlobalAveragePooling2D ()
            self.classifier = Плотный (количество_классов)
    
        вызов def (self, вводы):
            x = self.block_1 (входы)
            х = self.block_2 (х)
            x = self.global_pool (x)
            вернуть self.classifier (x)
    
    
    resnet = ResNet ()
    набор данных = ...
    resnet.fit (набор данных, эпох = 10)
    resnet.save (путь к файлу)
      

    Собираем все вместе: пример из конца в конец

    Вот что вы уже узнали:

    • A Layer инкапсулирует состояние (созданное в __init __ () или build () ) и некоторые вычисление (определено в вызове call () ).
    • Слои могут рекурсивно вкладываться для создания новых вычислительных блоков большего размера.
    • Слои
    • также могут создавать и отслеживать потери (обычно потери регуляризации). как метрики, через add_loss () и add_metric ()
    • Внешний контейнер, то, что вы хотите тренировать, — это модель . Модель является точно так же, как Layer , но с добавленными утилитами обучения и сериализации.

    Давайте объединим все это в сквозной пример: мы собираемся для реализации вариационного автоэнкодера (VAE).Обучим его цифрам MNIST.

    Наш VAE будет подклассом модели , построенным как вложенная композиция слоев этот подкласс Layer . В нем будет потеря регуляризации (дивергенция KL).

      из слоев импорта tensorflow.keras
    
    
    класс Sampling (Layers.Layer):
        "" "Использует (z_mean, z_log_var) для выборки z, вектора, кодирующего цифру." ""
    
        вызов def (self, вводы):
            z_mean, z_log_var = входы
            batch = tf.shape (z_mean) [0]
            dim = tf.форма (z_mean) [1]
            epsilon = tf.keras.backend.random_normal (форма = (партия, тусклый))
            вернуть z_mean + tf.exp (0.5 * z_log_var) * epsilon
    
    
    класс Encoder (слои.Layer):
        "" "Отображает цифры MNIST в тройку (z_mean, z_log_var, z). " ""
    
        def __init __ (self, latent_dim = 32, intermediate_dim = 64, name = "encoder", ** kwargs):
            super (Encoder, self) .__ init __ (name = name, ** kwargs)
            self.dense_proj = Layers.Dense (Intermediate_dim, Activation = "relu")
            self.dense_mean = Layers.Dense (latent_dim)
            я.плотный_лог_вар = слои, плотный (латентный_размер)
            self.sampling = Выборка ()
    
        вызов def (self, вводы):
            x = self.dense_proj (входные данные)
            z_mean = self.dense_mean (x)
            z_log_var = self.dense_log_var (x)
            z = self.sampling ((z_mean, z_log_var))
            вернуть z_mean, z_log_var, z
    
    
    класс Decoder (слои.Layer):
        "" "Преобразует z, вектор закодированных цифр, обратно в читаемую цифру." ""
    
        def __init __ (self, original_dim, intermediate_dim = 64, name = "decoder", ** kwargs):
            супер (Декодер, сам).__init __ (name = name, ** kwargs)
            self.dense_proj = Layers.Dense (Intermediate_dim, Activation = "relu")
            self.dense_output = Layers. Dense (original_dim, activate = "сигмоид")
    
        вызов def (self, вводы):
            x = self.dense_proj (входные данные)
            вернуть self.dense_output (x)
    
    
    класс VariationalAutoEncoder (keras.Model):
        "" "Объединяет кодер и декодер в сквозную модель для обучения." ""
    
        def __init __ (
            я
            original_dim,
            промежуточный_дим = 64,
            latent_dim = 32,
            name = "автоэнкодер",
            ** kwargs
        ):
            super (VariationalAutoEncoder, сам).__init __ (name = name, ** kwargs)
            self.original_dim = original_dim
            self.encoder = Encoder (latent_dim = latent_dim, intermediate_dim = intermediate_dim)
            self.decoder = Декодер (исходный_дим, промежуточный_дим = промежуточный_дим)
    
        вызов def (self, вводы):
            z_mean, z_log_var, z = self.encoder (входные данные)
            реконструировано = self.decoder (z)
            # Добавить потерю регуляризации расхождения KL.
            kl_loss = -0,5 * tf.reduce_mean (
                z_log_var - tf.square (z_mean) - tf. exp (z_log_var) + 1
            )
            я.add_loss (kl_loss)
            возвращение реконструировано
      

    Напишем простой обучающий цикл на MNIST:

      original_dim = 784
    vae = VariationalAutoEncoder (исходный_дим, 64, 32)
    
    optimizer = tf.keras.optimizers.Adam (learning_rate = 1e-3)
    mse_loss_fn = tf.keras.losses.MeanSquaredError ()
    
    loss_metric = tf.keras.metrics.Mean ()
    
    (x_train, _), _ = tf.keras.datasets.mnist.load_data ()
    x_train = x_train.reshape (60000, 784) .astype ("float32") / 255
    
    train_dataset = tf.data.Dataset.from_tensor_slices (x_train)
    train_dataset = train_dataset.shuffle (размер_буфера = 1024) .batch (64)
    
    эпох = 2
    
    # Перебираем эпохи.
    для эпохи в диапазоне (эпох):
        print ("Начало эпохи% d"% (эпоха,))
    
        # Перебираем пакеты набора данных.
        для шага x_batch_train в enumerate (train_dataset):
            с tf.GradientTape () в качестве ленты:
                реконструировано = vae (x_batch_train)
                # Вычислить потерю реконструкции
                loss = mse_loss_fn (x_batch_train, реконструировано)
                убыток + = сумма (vae. loss) # Добавить потерю регуляризации KLD
    
            grads = tape.gradient (потеря, vae.trainable_weights)
            optimizer.apply_gradients (zip (grads, vae.trainable_weights))
    
            loss_metric (убыток)
    
            если шаг% 100 == 0:
                print ("шаг% d: средняя потеря =% .4f"% (шаг, loss_metric.result ()))
      
      Начало эпохи 0
    шаг 0: средний убыток = 0,3577
    шаг 100: средняя потеря = 0,1258
    шаг 200: средняя потеря = 0,0994
    шаг 300: средняя потеря = 0,0893
    шаг 400: средняя потеря = 0,0843
    шаг 500: средняя потеря = 0.0809
    шаг 600: средняя потеря = 0,0788
    шаг 700: средняя потеря = 0,0772
    шаг 800: средняя потеря = 0,0760
    шаг 900: средняя потеря = 0,0750
    Начало эпохи 1
    шаг 0: средняя потеря = 0,0747
    шаг 100: средняя потеря = 0,0740
    шаг 200: средняя потеря = 0,0735
    шаг 300: средняя потеря = 0,0730
    шаг 400: средняя потеря = 0,0727
    шаг 500: средняя потеря = 0,0723
    шаг 600: средняя потеря = 0,0720
    шаг 700: средняя потеря = 0,0717
    шаг 800: средняя потеря = 0,0715
    шаг 900: средняя потеря = 0,0712
      

    Обратите внимание, что, поскольку VAE является подклассом модели , он имеет встроенное обучение. петли.Так что вы могли бы обучить его так:

      vae = VariationalAutoEncoder (784, 64, 32)
    
    optimizer = tf.keras.optimizers.Adam (learning_rate = 1e-3)
    
    vae.compile (оптимизатор, loss = tf.keras.losses.MeanSquaredError ())
    vae.fit (x_train, x_train, epochs = 2, batch_size = 64)
      
      Эпоха 1/2
    938/938 [==============================] - 1 с 1 мс / шаг - потеря: 0,0745
    Эпоха 2/2
    938/938 [==============================] - 1 с 1 мс / шаг - потеря: 0,0676
    
    
      

    Помимо объектно-ориентированной разработки: функциональный API

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

    Например, в приведенном ниже примере функционального API повторно используется тот же уровень Sampling . мы определили в примере выше:

      original_dim = 784
    промежуточный_дим = 64
    latent_dim = 32
    
    # Определить модель кодировщика.original_inputs = tf.keras.Input (shape = (original_dim,), name = "encoder_input")
    x = Layers.Dense (Intermediate_dim, Activation = "relu") (original_inputs)
    z_mean = Layers.Dense (latent_dim, name = "z_mean") (x)
    z_log_var = Layers.Dense (latent_dim, name = "z_log_var") (x)
    z = Выборка () ((z_mean, z_log_var))
    кодировщик = tf.keras.Model (входы = исходные_входы, выходы = z, имя = "кодировщик")
    
    # Определить модель декодера.
    latent_inputs = tf.keras.Input (shape = (latent_dim,), name = "z_sampling")
    x = Layers.Dense (Intermediate_dim, Activation = "relu") (latent_inputs)
    выходы = слои.Плотный (исходный_дим, активация = "сигмоид") (х)
    decoder = tf.keras.Model (входы = скрытые_входы, выходы = выходы, name = "декодер")
    
    # Определить модель VAE.
    выходы = декодер (z)
    vae = tf.keras.Model (входы = исходные_входы, выходы = выходы, name = "vae")
    
    # Добавить потерю регуляризации расхождения KL. 
    kl_loss = -0.5 * tf.reduce_mean (z_log_var - tf.square (z_mean) - tf.exp (z_log_var) + 1)
    vae.add_loss (kl_loss)
    
    # Поезд.
    optimizer = tf.keras.optimizers.Adam (learning_rate = 1e-3)
    vae.compile (оптимизатор, loss = tf.keras.losses.MeanSquaredError ())
    vae.fit (x_train, x_train, epochs = 3, batch_size = 64)
      
      Эпоха 1/3
    938/938 [==============================] - 1 с 1 мс / шаг - потеря: 0,0747
    Эпоха 2/3
    938/938 [==============================] - 1 с 1 мс / шаг - потеря: 0,0676
    Эпоха 3/3
    938/938 [==============================] - 1 с 1 мс / шаг - потеря: 0,0676
    
    
      

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


    Ур. нет. Название модели Уравнение модели Каталожные номера

    (2,1) Льюис MR = exp (- узлов ) [474 Страница MR = exp (- узлов n ) [48]
    (2.3) Измененная страница MR = α exp [- ( kt n )] [49]
    (2,4) Overhults MR = exp [ узлы ) n ] [50]
    (2,5) Хендерсон и Пабис MR = α экспл. (- узлы )
    (3,1) Логарифмический MR = α exp (- узлов ) + c [39]
    (3.2) Двухчленная экспонента MR = α exp (- kt ) + b exp (- k 1 t ) [52]
    ( Ван и Сингх MR = 1 + α t + [49]
    (3,4) Thompson t = α 1 ln (b) ln (b) 90 ln (MR) 2 [53]
    (3.5) Распределение Вейбулла MR = α b exp [- ( узлы n )] [54]

    Уровень 2 — канал передачи данных

    Уровень 2 — канал передачи данных

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

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

    IEEE разделил уровень канала передачи данных на два подуровня:

    Logical Link Control (LLC) и Media Access Control (MAC).

    MAC (управление доступом к среде)

    • Подуровень управления доступом к среде (MAC) уровня канала данных управляет протокольным доступом к физической сетевой среде. Спецификация MAC IEEE определяет MAC-адреса, которые позволяют нескольким устройствам однозначно идентифицировать друг друга на уровне канала данных. MAC описывает, как станция планирует, передает и принимает данные в совместно используемой среде мультимедиа, обеспечивает надежную передачу информации по каналу связи, синхронизирует передачу данных, распознает ошибки (не исправляет их) и контролирует поток данных.
    • Определяет, как пакеты размещаются на носителе.
    • Здесь определяется физическая адресация, а также локальные топологии.
    • Примером MAC является Ethernet / 802.3 и Token Ring / 802.5
    • На этом уровне можно использовать дисциплину линии, уведомление об ошибках, упорядоченную доставку кадров и дополнительное управление потоком.
    • В общем, MAC важны только в средах с общей средой, где несколько узлов могут подключаться к одной и той же среде передачи.

    LLC (управление логической связью)