учебник и примеры слоев keras

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


person ida    schedule 16.05.2017    source источник


Ответы (1)


документация Keras показывает все input_shape, ожидаемые для каждого слоя.

В Keras вы увидите формы ввода в следующих формах:

  • input_shape определяется пользователем в слоях
  • формы, показанные в резюме и др.
  • фигуры массива
  • тензорные фигуры

Введите форму, определенную пользователем, и формы, переданные в Reshape слоя:

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

Например, когда вы определяете слой Dense, вы указываете его input_shape как (10,), что означает, что он ожидает десяти числовых значений в качестве входных данных.

Фигуры, показанные keras в целом:

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

В этом плотном слое Керас будет отображать (None, 10) в качестве входной формы.

Фигуры массива:

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

Для нашего Dense(10) предположим, что вы передали пакет с 300 образцами для обучения, тогда keras покажет сообщения об ошибках, содержащие форму (300,10)

Тензорные фигуры:

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

Формы тензора будут следовать идее использования размера пакета в качестве первого измерения. Итак, помните, что всякий раз, когда вы работаете непосредственно с тензорами, они будут иметь форму (BatchSize, ...other dimensions...).

Некоторые из наиболее распространенных слоев и их формы ввода:

Теперь, когда вы знаете эти различия, я буду продолжать использовать форму с None ниже. Не забудьте игнорировать часть None при определении input_shape.

Плотный

Плотный слой обычно принимает на вход одиночные значения, а не массивы, поэтому его входная форма: (None, AnyNumberOfInputValues)

Вывод будет аналогичным: (None, NumberOfNeuronsInThisLayer)

Conv1D

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

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

Keras предлагает вам возможность иметь channels_first или channels_last, это меняет ввод и вывод слоев:

  • Сначала каналы: (None, channels, length)
  • С последними каналами: (None, length, channels)

Вывод также соответствует настройкеchannels_first/channels_last и выглядит следующим образом: (None, NumberOfFilters, ResultingLength) — с каналами первыми

Значение по умолчанию — channels_last, и вы можете определить его в каждом слое или в файле keras.json.

Conv2D:

Та же идея, что и в Conv1D, с использованием каналов, либо с каналами сначала, либо с каналами в конце. Но теперь он имеет два измерения, как изображения, каждый канал по сравнению с цветами Красный, Зеленый, Синий.

  • Сначала с каналами: (None, channels, pixelsX, pixelsY)
  • С последними каналами: (None, pixelsX, pixelsY, channels)

Вывод, следующий за параметром channels_firts/channels_last, выглядит как (None, NumberOfFilters, resultPixelsX, resultPixelsY) для channels_first.

Повторяющиеся слои:

Слои Lstm трудно понять. У них есть несколько вариантов, которые используют разные формы ввода, и есть несколько интересных руководств по этому поводу, таких как этот и это тоже .

Обычно входные формы (None, TimeSteps, InputDimension)

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

Результат также зависит от выбранных опций. Это может быть (None, Timesteps, NumberOfCellsInTheLeyr) или просто (None, NumberOfCells), в зависимости от того, хотите ли вы возвращать последовательности или нет.

person Daniel Möller    schedule 17.05.2017