将Conv2D从PyTorch代码转换为Tensorflow



我有以下PyTorch层定义:

self.e_conv_1 = nn.Sequential(
nn.ZeroPad2d((1, 2, 1, 2)),
nn.Conv2d(in_channels=3, out_channels=64, kernel_size=(5, 5), stride=(2, 2)),
nn.LeakyReLU(),
)

我想在Tensorflow中有相同的层声明。我怎么才能到达那里呢?

self.e_conv_1 = tf.keras.Sequential([
layers.Conv2D(64, kernel_size=(5, 5), activation=partial(tf.nn.leaky_relu, alpha=0.01), padding='same', strides=(1, 2))
])

应该是像上面这样的代码吗?我认为至少strides和padding是不一样的。

提前感谢所有帮助过我的人。

我认为你可以根据tenssorflow文档以这种方式使用图层:

tf.keras.Sequential([
layers.ZeroPadding2D(padding=((1,2), (1,2)))
layers.Conv2D(64, kernel_size=(5, 5), activation=partial(tf.nn.leaky_relu, 
alpha=0.01), padding='valid', strides=(2, 2))
])

的主要区别在于火炬零填充和tensroflow零填充参数之间。在火炬填充参数是:

m = nn.ZeroPad2d((left, right, top, bottom))

在tensorflow:

tf.keras.layers.ZeroPadding2D(padding=((top,bottom),(left,right)))

最新更新