【发布时间】:2021-01-13 19:24:05
【问题描述】:
我对如何在 PyTorch 中复制 Keras (TensorFlow) 卷积感到困惑。
在 Keras,我可以做这样的事情。 (输入大小为(256, 237, 1, 21),输出大小为(256, 237, 1, 1024)。
import tensorflow as tf
x = tf.random.normal((256,237,1,21))
y = tf.keras.layers.Conv1D(filters=1024, kernel_size=5,padding="same")(x)
print(y.shape)
(256, 237, 1, 1024)
但是,在 PyTorch 中,当我尝试做同样的事情时,我会得到不同的输出大小:
import torch.nn as nn
x = torch.randn(256,237,1,21)
m = nn.Conv1d(in_channels=237, out_channels=1024, kernel_size=(1,5))
y = m(x)
print(y.shape)
torch.Size([256, 1024, 1, 17])
我希望 PyTorch 提供与 Keras 相同的输出大小:
这个previous question 似乎暗示 Keras 过滤器是 PyTorch 的 out_channels 但这就是我所拥有的。我试图在 padding=(0,503) 的 PyTorch 中添加填充,但这给了我 torch.Size([256, 1024, 1, 1023]) 但这仍然不正确。这也比 keras 花费的时间要长得多,所以我觉得我错误地分配了一个参数。
如何在 PyTorch 中复制 Keras 对卷积所做的操作?
【问题讨论】:
标签: python tensorflow keras deep-learning pytorch