備忘録です.
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を与える.