Преобразование сверточных нейронных сетей Keras (Tensorflow) в сверточные сети PyTorch? - PullRequest
1 голос
/ 27 марта 2019

Keras и PyTorch используют разные аргументы для заполнения: Keras требует ввода строки, а PyTorch работает с числами. В чем разница, и как один может быть переведен в другой (какой код получает эквивалентный результат в любой среде)?

PyTorch также принимает аргументы in_channels, out_chanels, в то время как keras принимает только аргумент, называемый фильтрами. Что означает «фильтры»?

1 Ответ

1 голос
/ 27 марта 2019

Относительно заполнения,

Keras => 'valid' - нет заполнения;'same' - ввод дополняется так, что форма вывода совпадает с формой ввода

Pytorch => вы явно указываете заполнение

Допустимое заполнение

>>> model = keras.Sequential()
>>> model.add(keras.layers.Conv2D(filters=10, kernel_size=3, padding='valid', input_shape=(28,28,3)))
>>> model.layers[0].output_shape
(None, 26, 26, 10)

>>> x = torch.randn((1,3,28,28))
>>> conv = torch.nn.Conv2d(in_channels=3, out_channels=10, kernel_size=3)
>>> conv(x).shape
torch.Size([1, 10, 26, 26])

Одинаковое заполнение

>>> model = keras.Sequential()
>>> model.add(keras.layers.Conv2D(filters=10, kernel_size=3, padding='same', input_shape=(28,28,3)))
>>> model.layers[0].output_shape
(None, 28, 28, 10)

>>> x = torch.randn((1,3,28,28))
>>> conv = torch.nn.Conv2d(in_channels=3, out_channels=10, kernel_size=3, padding=1)
>>> conv(x).shape
torch.Size([1, 10, 28, 28])

W - Ширина ввода, F - Размер фильтра (или ядра), P - заполнение, S - Шаг, Wout - Ширина вывода

Wout = ((W-F + 2P) / S) + 1

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

http://cs231n.github.io/convolutional-networks/

Относительно in_channels, out_chanels и фильтров, * 1029Фильтры *

такие же, как out_channels.В Keras, in_channels автоматически выводится из формы предыдущего слоя или input_shape (в случае первого слоя).

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