1. ホーム
  2. python

[解決済み] tf.layers.conv2d と tf.contrib.slim.conv2d の相違点

2022-02-02 07:19:25

質問

私が使っているネットワークは、tf-slimのconv2dを使っていますが、tf.lays.conv2dを使うように変換しようとしています。なぜなら、tf.laysがよりサポートされており、将来性のあるオプションのように見えるからです。 関数のシグネチャはかなり似ていますが、この2つの間に何かアルゴリズム的な違いがあるのでしょうか? 私は予想と異なる出力テンソル次元を得ることができました。

x = tf.layers.conv2d(inputs=x,
                     filters=256,
                     kernel_size=[3,3],
                     trainable=True)

これとは対照的に

x = slim.conv2d(x, 256, 3)

解決方法は?

<ブロッククオート

出力されるテンソルの次元が予想と違っているのですが。

これは、デフォルトで slim.conv2d は同じパディングを使うのに対し、 tf.layers.conv2d は有効なパディングを使うことに起因しています。

全く同じ動作を再現したい場合は、以下のような正しい実装があります。

x = tf.layers.conv2d(x, 256, 3, padding='same')