gpt4 book ai didi

python - 将 Keras (Tensorflow) 卷积神经网络转换为 PyTorch 卷积网络?

转载 作者:行者123 更新时间:2023-12-01 08:08:59 24 4
gpt4 key购买 nike

Keras 和 PyTorch 使用不同的参数进行填充:Keras 需要输入字符串,而 PyTorch 则使用数字。有什么区别,如何将一个转换为另一个(哪些代码在任一框架中获得相同的结果)?

PyTorch 还采用参数 in_channels、out_chanels,而 keras 只采用称为过滤器的参数。 “过滤器”是什么意思?

最佳答案

关于填充,

Keras => '有效' - 无填充; '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 和过滤器,

过滤器与out_channels相同。在 Keras 中,in_channels 是自动从前一层形状或 input_shape(如果是第一层)推断出来的。

关于python - 将 Keras (Tensorflow) 卷积神经网络转换为 PyTorch 卷积网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55381052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com