20200104のTensorFlowに関する記事は1件です。

[tensorflow]tf.nn.conv2d()のfiltersにはtensorを与える.

備忘録です.
tf.nn.conv2d()の引数filtersにはtensorとして定義したkernelを与えましょう.

悪い例

conv = tf.nn.conv2d(
                input=image,
                filters=[8,8,64,128],
                padding="VALID",
                data_format="NHWC"
            )

公式ドキュメントを見ればわかるが,filtersにはtensorを与える.上のようにkernelのshapeを与えてはいけない(気持ちはわかる).
ちなみに上記のコードだとこんなエラーが出る.

ValueError: Shape must be rank 4 but is rank 1 for 'Conv2D_1' (op: 'Conv2D') with input shapes: [?,28,28,64], [4].

動く例

fil = tf.get_variable('weights', [8,8,64,128], dtype=tf.float32)
conv = tf.nn.conv2d(
                input=image
                filters=fil,
                padding="VALID",
                data_format="NHWC"
            )

kernel(fil)をtensorとして定義して,filtersにはそのtensorを与える.

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む