Tey*_*dge 2 python keras pytorch
Keras 和 PyTorch 使用不同的参数进行填充:Keras 需要输入字符串,而 PyTorch 使用数字。有什么区别,如何将一个框架转换为另一个框架(哪些代码在任一框架中获得相同的结果)?
PyTorch 还采用参数 in_channels、out_chanels,而 keras 只采用称为过滤器的参数。“过滤器”是什么意思?
关于填充,
\n\nKeras => \'有效\' - 无填充;\n \'same\' - 输入被填充,以便输出形状与输入形状相同
\n\nPytorch => 你明确指定填充
\n\n有效填充
\n\n>>> model = keras.Sequential()\n>>> model.add(keras.layers.Conv2D(filters=10, kernel_size=3, padding=\'valid\', input_shape=(28,28,3)))\n>>> model.layers[0].output_shape\n(None, 26, 26, 10)\n\n>>> x = torch.randn((1,3,28,28))\n>>> conv = torch.nn.Conv2d(in_channels=3, out_channels=10, kernel_size=3)\n>>> conv(x).shape\ntorch.Size([1, 10, 26, 26])\nRun Code Online (Sandbox Code Playgroud)\n\n相同的填充
\n\n>>> model = keras.Sequential()\n>>> model.add(keras.layers.Conv2D(filters=10, kernel_size=3, padding=\'same\', input_shape=(28,28,3)))\n>>> model.layers[0].output_shape\n(None, 28, 28, 10)\n\n>>> x = torch.randn((1,3,28,28))\n>>> conv = torch.nn.Conv2d(in_channels=3, out_channels=10, kernel_size=3, padding=1)\n>>> conv(x).shape\ntorch.Size([1, 10, 28, 28])\nRun Code Online (Sandbox Code Playgroud)\n\nW - 输入宽度,F - 过滤器(或内核)大小,P - 填充,S - 步幅,Wout - 输出宽度
\n\nWout = ((W\xe2\x88\x92F+2P)/S)+1
\n\n对于高度也是如此。使用此公式,您可以计算在输出中保留输入宽度或高度所需的填充量。
\n\n\n\n关于in_channels、out_channels和过滤器,
\n\n过滤器与 out_channels 相同。在 Keras 中,in_channels 是自动从前一层形状或 input_shape(如果是第一层)推断出来的。
\n| 归档时间: |
|
| 查看次数: |
2381 次 |
| 最近记录: |