当我使用
时def main_conv_nn(images, training):
# Convolution
convFilterShape = [3, 3, 1, 32]
convFilterWeights = tf.Variable(tf.truncated_normal(convFilterShape, stddev=0.1))
Layer1 = tf.nn.conv2d(images, convFilterWeights, strides= [1,1,1,1] , padding='SAME')
对于MNIST相关代码,其性能低于20%。它的表现非常糟糕。
然而,当我改变我的代码时,
def main_conv_nn(images, training):
# Convolution
#convFilterShape = [3, 3, 1, 32]
#convFilterWeights = tf.Variable(tf.truncated_normal(convFilterShape, stddev=0.1))
#Layer1 = tf.nn.conv2d(images, convFilterWeights, strides= [1,1,1,1] , padding='SAME')
Layer1 = tf.layers.conv2d(images, 32, [5, 5], padding= 'same')
它完美无缺。
为什么tf.nn.conv2d不起作用? (没有错误,但工作很奇怪)
答案 0 :(得分:0)
您可能希望首先在相同条件下进行测试。您的图层示例中的转换滤镜尺寸为5 x 5,第一个尺寸为3 x 3。 3 x 3可能太小而无法捕获某些依赖项。
答案 1 :(得分:0)
tf.layers.conv2d
是卷积+偏见
tf.nn.conv2d
仅限卷积